@forgehive/runner 0.1.6 → 0.1.8
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/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/test/describe.test.js +6 -6
- package/dist/test/describe.test.js.map +1 -1
- package/dist/test/runner.test.js +20 -9
- package/dist/test/runner.test.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +11 -7
- package/src/test/describe.test.ts +13 -13
- package/src/test/runner.test.ts +30 -14
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { TaskInstanceType, BaseFunction } from '@forgehive/task';
|
|
2
2
|
import { type SchemaDescription } from '@forgehive/schema';
|
|
3
|
-
type
|
|
4
|
-
|
|
3
|
+
export type GenericTask = TaskInstanceType<BaseFunction, any>;
|
|
4
|
+
type TaskRecord = {
|
|
5
|
+
task: GenericTask;
|
|
5
6
|
};
|
|
6
7
|
type Tasks = Record<string, TaskRecord>;
|
|
7
8
|
export interface RunnerParsedArguments {
|
|
@@ -29,11 +30,11 @@ export declare class Runner<InputType = unknown, ParseResult extends RunnerParse
|
|
|
29
30
|
description?: string;
|
|
30
31
|
schema?: SchemaDescription;
|
|
31
32
|
}>;
|
|
32
|
-
load
|
|
33
|
-
getTask
|
|
33
|
+
load(name: string, task: GenericTask): void;
|
|
34
|
+
getTask(name: string): GenericTask | undefined;
|
|
34
35
|
getTasks(): Tasks;
|
|
35
36
|
getTaskList(): string[];
|
|
36
|
-
run<
|
|
37
|
+
run<F extends BaseFunction = BaseFunction, P = Parameters<F>[0], R = ReturnType<F>>(name: string, args: P): Promise<Awaited<R>>;
|
|
37
38
|
}
|
|
38
39
|
export default Runner;
|
|
39
40
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAK1D,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;AAE7D,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAGvC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,MAAM,CAAC,SAAS,GAAG,OAAO,EAAE,WAAW,SAAS,qBAAqB,GAAG,qBAAqB;IACjG,MAAM,EAAE,KAAK,CAAA;IACb,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,WAAW,CAAA;IAChD,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;gBAEzC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,WAAW;IAsB/D;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;IAIlE;;;;OAIG;YACW,cAAc;IAM5B,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC;IAe9F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAI3C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAS9C,QAAQ,IAAI,KAAK;IAIjB,WAAW,IAAI,MAAM,EAAE;IAIjB,GAAG,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EACtF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAgBvB;AAED,eAAe,MAAM,CAAA"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAqBA,MAAa,MAAM;IAKjB,YAAY,gBAAmD;QAC7D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,iEAAiE;QACjE,IAAI,CAAC,cAAc,GAAG,gBAAgB,IAAI,CAAC,CAAC,IAAe,EAAe,EAAE;YAC1E,6DAA6D;YAC7D,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACzE,OAAO;oBACL,8DAA8D;oBAC9D,QAAQ,EAAE,MAAM,CAAE,IAAY,CAAC,IAAI,CAAC;oBACpC,8DAA8D;oBAC9D,IAAI,EAAG,IAAY,CAAC,IAAI;iBACC,CAAA;YAC7B,CAAC;YAED,8DAA8D;YAC9D,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;QAEF,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,SAAgD;QACzD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc,CAAC,IAAe;QAC1C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC1C,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,MAAM,MAAM,GAAuF,EAAE,CAAA;QAErG,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,GAAG;gBACb,IAAI;gBACJ,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;gBAClC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;aACxB,CAAA;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,IAAiB;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;IAC9B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,WAAW;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,IAAO;QAEP,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;QAEvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,OAAO,OAAqB,CAAA;IAC9B,CAAC;CACF;AArGD,wBAqGC;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -8,10 +8,8 @@ describe('Runner describe', () => {
|
|
|
8
8
|
const schema = new task_1.Schema({
|
|
9
9
|
value: task_1.Schema.number()
|
|
10
10
|
});
|
|
11
|
-
const task =
|
|
11
|
+
const task = (0, task_1.createTask)(schema, {}, async ({ value }) => {
|
|
12
12
|
return value;
|
|
13
|
-
}, {
|
|
14
|
-
schema
|
|
15
13
|
});
|
|
16
14
|
task.setDescription('A test task that processes numbers');
|
|
17
15
|
runner.load('testTask', task);
|
|
@@ -30,7 +28,8 @@ describe('Runner describe', () => {
|
|
|
30
28
|
});
|
|
31
29
|
it('should handle tasks without description or schema', () => {
|
|
32
30
|
const runner = new index_1.Runner();
|
|
33
|
-
const
|
|
31
|
+
const schema = new task_1.Schema({});
|
|
32
|
+
const task = (0, task_1.createTask)(schema, {}, async () => {
|
|
34
33
|
return 'test';
|
|
35
34
|
});
|
|
36
35
|
runner.load('simpleTask', task);
|
|
@@ -45,10 +44,11 @@ describe('Runner describe', () => {
|
|
|
45
44
|
});
|
|
46
45
|
it('should handle multiple tasks with task: prefix', () => {
|
|
47
46
|
const runner = new index_1.Runner();
|
|
48
|
-
const
|
|
47
|
+
const schema = new task_1.Schema({
|
|
49
48
|
descriptorName: task_1.Schema.string(),
|
|
50
49
|
args: task_1.Schema.mixedRecord()
|
|
51
|
-
})
|
|
50
|
+
});
|
|
51
|
+
const runTask = (0, task_1.createTask)(schema, {}, async () => 'running');
|
|
52
52
|
runTask.setDescription('Executes the task');
|
|
53
53
|
const createTaskInstance = (0, task_1.createTask)(new task_1.Schema({
|
|
54
54
|
descriptorName: task_1.Schema.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.test.js","sourceRoot":"","sources":["../../src/test/describe.test.ts"],"names":[],"mappings":";;AAAA,oCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"describe.test.js","sourceRoot":"","sources":["../../src/test/describe.test.ts"],"names":[],"mappings":"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"}
|
package/dist/test/runner.test.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
3
|
const index_1 = require("../index");
|
|
4
|
+
const schema_1 = require("@forgehive/schema");
|
|
5
5
|
const task_1 = require("@forgehive/task");
|
|
6
6
|
describe('Runner', () => {
|
|
7
7
|
it('should create a new Runner instance', () => {
|
|
@@ -27,16 +27,18 @@ describe('Runner', () => {
|
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
29
|
it('should run a task', async () => {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
});
|
|
30
|
+
const schema = new schema_1.Schema({});
|
|
31
|
+
const task = (0, task_1.createTask)(schema, {}, async () => 'hi five!!!');
|
|
33
32
|
const runner = new index_1.Runner();
|
|
34
33
|
runner.load('sample', task);
|
|
35
34
|
const result = await runner.run('sample', {});
|
|
36
35
|
expect(result).toBe('hi five!!!');
|
|
37
36
|
});
|
|
38
37
|
it('should run a task with params', async () => {
|
|
39
|
-
const
|
|
38
|
+
const schema = new schema_1.Schema({
|
|
39
|
+
int: schema_1.Schema.number()
|
|
40
|
+
});
|
|
41
|
+
const taskInt = (0, task_1.createTask)(schema, {}, async ({ int }) => {
|
|
40
42
|
return int + 5;
|
|
41
43
|
});
|
|
42
44
|
const runner = new index_1.Runner();
|
|
@@ -45,10 +47,16 @@ describe('Runner', () => {
|
|
|
45
47
|
expect(result).toBe(11);
|
|
46
48
|
});
|
|
47
49
|
it('should run multiple tasks with different params', async () => {
|
|
48
|
-
const
|
|
50
|
+
const schema = new schema_1.Schema({
|
|
51
|
+
int: schema_1.Schema.number(),
|
|
52
|
+
});
|
|
53
|
+
const schema2 = new schema_1.Schema({
|
|
54
|
+
str: schema_1.Schema.string()
|
|
55
|
+
});
|
|
56
|
+
const taskInt = (0, task_1.createTask)(schema, {}, async ({ int }) => {
|
|
49
57
|
return int + 5;
|
|
50
58
|
});
|
|
51
|
-
const taskString =
|
|
59
|
+
const taskString = (0, task_1.createTask)(schema2, {}, async ({ str }) => {
|
|
52
60
|
return str + ' world';
|
|
53
61
|
});
|
|
54
62
|
const runner = new index_1.Runner();
|
|
@@ -60,10 +68,13 @@ describe('Runner', () => {
|
|
|
60
68
|
expect(str).toBe('hello world');
|
|
61
69
|
});
|
|
62
70
|
it('should get task back and be able to run it', async () => {
|
|
63
|
-
const
|
|
71
|
+
const schema = new schema_1.Schema({
|
|
72
|
+
int: schema_1.Schema.number()
|
|
73
|
+
});
|
|
74
|
+
const taskInt = (0, task_1.createTask)(schema, {}, async ({ int }) => {
|
|
64
75
|
return int + 5;
|
|
65
76
|
});
|
|
66
|
-
const indentity =
|
|
77
|
+
const indentity = (0, task_1.createTask)(schema, {}, async ({ int }) => {
|
|
67
78
|
return int + 5;
|
|
68
79
|
});
|
|
69
80
|
const runner = new index_1.Runner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/test/runner.test.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/test/runner.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgehive/runner",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"access": "public",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@forgehive/schema": "^0.1.4",
|
|
12
|
-
"@forgehive/task": "^0.1.
|
|
12
|
+
"@forgehive/task": "^0.1.7"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@forgehive/
|
|
17
|
-
"@forgehive/
|
|
16
|
+
"@forgehive/task": "0.1.8",
|
|
17
|
+
"@forgehive/schema": "0.1.4"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@types/jest": "^29.5.12",
|
package/src/index.ts
CHANGED
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
import { TaskInstanceType, BaseFunction } from '@forgehive/task'
|
|
3
3
|
import { type SchemaDescription } from '@forgehive/schema'
|
|
4
4
|
|
|
5
|
-
type
|
|
6
|
-
|
|
5
|
+
// Export a generic task type that is more permissive with boundaries
|
|
6
|
+
// Allows the load method to accept any task type
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
export type GenericTask = TaskInstanceType<BaseFunction, any>
|
|
9
|
+
|
|
10
|
+
type TaskRecord = {
|
|
11
|
+
task: GenericTask
|
|
7
12
|
}
|
|
8
13
|
|
|
9
14
|
type Tasks = Record<string, TaskRecord>
|
|
@@ -75,18 +80,17 @@ export class Runner<InputType = unknown, ParseResult extends RunnerParsedArgumen
|
|
|
75
80
|
return result
|
|
76
81
|
}
|
|
77
82
|
|
|
78
|
-
load
|
|
83
|
+
load(name: string, task: GenericTask): void {
|
|
79
84
|
this._tasks[name] = { task }
|
|
80
85
|
}
|
|
81
86
|
|
|
82
|
-
getTask
|
|
87
|
+
getTask(name: string): GenericTask | undefined {
|
|
83
88
|
if (this._tasks[name] === undefined) {
|
|
84
89
|
return undefined
|
|
85
90
|
}
|
|
86
91
|
|
|
87
92
|
const { task } = this._tasks[name]
|
|
88
|
-
|
|
89
|
-
return task as TaskInstanceType<T>
|
|
93
|
+
return task
|
|
90
94
|
}
|
|
91
95
|
|
|
92
96
|
getTasks(): Tasks {
|
|
@@ -97,7 +101,7 @@ export class Runner<InputType = unknown, ParseResult extends RunnerParsedArgumen
|
|
|
97
101
|
return Object.keys(this._tasks)
|
|
98
102
|
}
|
|
99
103
|
|
|
100
|
-
async run<
|
|
104
|
+
async run<F extends BaseFunction = BaseFunction, P = Parameters<F>[0], R = ReturnType<F>>(
|
|
101
105
|
name: string,
|
|
102
106
|
args: P
|
|
103
107
|
): Promise<Awaited<R>> {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Runner } from '../index'
|
|
2
|
-
import {
|
|
2
|
+
import { Schema, createTask } from '@forgehive/task'
|
|
3
3
|
|
|
4
4
|
describe('Runner describe', () => {
|
|
5
5
|
it('should return task details including name, description and schema', () => {
|
|
@@ -8,10 +8,8 @@ describe('Runner describe', () => {
|
|
|
8
8
|
value: Schema.number()
|
|
9
9
|
})
|
|
10
10
|
|
|
11
|
-
const task =
|
|
11
|
+
const task = createTask(schema, {}, async ({ value }) => {
|
|
12
12
|
return value
|
|
13
|
-
}, {
|
|
14
|
-
schema
|
|
15
13
|
})
|
|
16
14
|
|
|
17
15
|
task.setDescription('A test task that processes numbers')
|
|
@@ -34,7 +32,9 @@ describe('Runner describe', () => {
|
|
|
34
32
|
|
|
35
33
|
it('should handle tasks without description or schema', () => {
|
|
36
34
|
const runner = new Runner()
|
|
37
|
-
const
|
|
35
|
+
const schema = new Schema({})
|
|
36
|
+
|
|
37
|
+
const task = createTask(schema, {}, async () => {
|
|
38
38
|
return 'test'
|
|
39
39
|
})
|
|
40
40
|
|
|
@@ -53,14 +53,13 @@ describe('Runner describe', () => {
|
|
|
53
53
|
it('should handle multiple tasks with task: prefix', () => {
|
|
54
54
|
const runner = new Runner()
|
|
55
55
|
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
)
|
|
56
|
+
const schema = new Schema({
|
|
57
|
+
descriptorName: Schema.string(),
|
|
58
|
+
args: Schema.mixedRecord()
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
const runTask = createTask(schema, {}, async () => 'running')
|
|
62
|
+
|
|
64
63
|
runTask.setDescription('Executes the task')
|
|
65
64
|
|
|
66
65
|
const createTaskInstance = createTask(
|
|
@@ -72,6 +71,7 @@ describe('Runner describe', () => {
|
|
|
72
71
|
return descriptorName
|
|
73
72
|
}
|
|
74
73
|
)
|
|
74
|
+
|
|
75
75
|
createTaskInstance.setDescription('Creates a new task')
|
|
76
76
|
|
|
77
77
|
runner.load('task:run', runTask)
|
package/src/test/runner.test.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
1
|
import { Runner } from '../index'
|
|
3
|
-
import {
|
|
2
|
+
import { Schema } from '@forgehive/schema'
|
|
3
|
+
import { createTask } from '@forgehive/task'
|
|
4
4
|
|
|
5
5
|
describe('Runner', () => {
|
|
6
6
|
it('should create a new Runner instance', () => {
|
|
@@ -32,9 +32,9 @@ describe('Runner', () => {
|
|
|
32
32
|
})
|
|
33
33
|
|
|
34
34
|
it('should run a task', async () => {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
})
|
|
35
|
+
const schema = new Schema({})
|
|
36
|
+
|
|
37
|
+
const task = createTask(schema, {}, async () => 'hi five!!!')
|
|
38
38
|
|
|
39
39
|
const runner = new Runner()
|
|
40
40
|
runner.load('sample', task)
|
|
@@ -45,24 +45,36 @@ describe('Runner', () => {
|
|
|
45
45
|
})
|
|
46
46
|
|
|
47
47
|
it('should run a task with params', async () => {
|
|
48
|
-
const
|
|
48
|
+
const schema = new Schema({
|
|
49
|
+
int: Schema.number()
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
const taskInt = createTask(schema, {}, async ({ int }) => {
|
|
49
53
|
return int + 5
|
|
50
54
|
})
|
|
51
55
|
|
|
52
56
|
const runner = new Runner()
|
|
53
57
|
runner.load('sample', taskInt)
|
|
54
58
|
|
|
55
|
-
const result = await runner.run
|
|
59
|
+
const result = await runner.run('sample', { int: 6 })
|
|
56
60
|
|
|
57
61
|
expect(result).toBe(11)
|
|
58
62
|
})
|
|
59
63
|
|
|
60
64
|
it('should run multiple tasks with different params', async () => {
|
|
61
|
-
const
|
|
65
|
+
const schema = new Schema({
|
|
66
|
+
int: Schema.number(),
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
const schema2 = new Schema({
|
|
70
|
+
str: Schema.string()
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const taskInt = createTask(schema, {}, async ({ int }) => {
|
|
62
74
|
return int + 5
|
|
63
75
|
})
|
|
64
76
|
|
|
65
|
-
const taskString =
|
|
77
|
+
const taskString = createTask(schema2, {}, async ({ str }) => {
|
|
66
78
|
return str + ' world'
|
|
67
79
|
})
|
|
68
80
|
|
|
@@ -70,26 +82,30 @@ describe('Runner', () => {
|
|
|
70
82
|
runner.load('int', taskInt)
|
|
71
83
|
runner.load('string', taskString)
|
|
72
84
|
|
|
73
|
-
const int = await runner.run
|
|
74
|
-
const str = await runner.run
|
|
85
|
+
const int = await runner.run('int', { int: 6 })
|
|
86
|
+
const str = await runner.run('string', { str: 'hello' })
|
|
75
87
|
|
|
76
88
|
expect(int).toBe(11)
|
|
77
89
|
expect(str).toBe('hello world')
|
|
78
90
|
})
|
|
79
91
|
|
|
80
92
|
it('should get task back and be able to run it', async () => {
|
|
81
|
-
const
|
|
93
|
+
const schema = new Schema({
|
|
94
|
+
int: Schema.number()
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
const taskInt = createTask(schema, {}, async ({ int }) => {
|
|
82
98
|
return int + 5
|
|
83
99
|
})
|
|
84
100
|
|
|
85
|
-
const indentity =
|
|
101
|
+
const indentity = createTask(schema, {}, async ({ int }) => {
|
|
86
102
|
return int + 5
|
|
87
103
|
})
|
|
88
104
|
|
|
89
105
|
const runner = new Runner()
|
|
90
106
|
runner.load('int', taskInt)
|
|
91
107
|
|
|
92
|
-
const task = runner.getTask
|
|
108
|
+
const task = runner.getTask('int')
|
|
93
109
|
|
|
94
110
|
let int = 0
|
|
95
111
|
if (task !== undefined) {
|