@forgehive/task 0.1.3 → 0.1.5
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/README.md +6 -6
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -7
- package/dist/index.js.map +1 -1
- package/dist/test/add-listener.test.js +3 -1
- package/dist/test/add-listener.test.js.map +1 -1
- package/dist/test/validation.test.js +177 -19
- package/dist/test/validation.test.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +34 -8
- package/src/test/add-listener.test.ts +3 -1
- package/src/test/validation.test.ts +197 -18
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @forgehive/task
|
|
2
2
|
|
|
3
3
|
A powerful task management library for creating type-safe, boundary-separated tasks with validation.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install @
|
|
8
|
+
npm install @forgehive/task
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
12
12
|
|
|
13
|
-
The `@
|
|
13
|
+
The `@forgehive/task` package provides a way to create strongly-typed tasks with:
|
|
14
14
|
|
|
15
15
|
- Input validation using schemas
|
|
16
16
|
- Boundary separation for better testability
|
|
@@ -22,7 +22,7 @@ The `@shadow/task` package provides a way to create strongly-typed tasks with:
|
|
|
22
22
|
Here's a simple example of creating a task:
|
|
23
23
|
|
|
24
24
|
```typescript
|
|
25
|
-
import { createTask, Schema } from '@
|
|
25
|
+
import { createTask, Schema } from '@forgehive/task';
|
|
26
26
|
|
|
27
27
|
// Define a schema for task input validation
|
|
28
28
|
const schema = new Schema({
|
|
@@ -126,8 +126,8 @@ registerUser.setBoundariesData({
|
|
|
126
126
|
Here's an example of a task used in a CLI application:
|
|
127
127
|
|
|
128
128
|
```typescript
|
|
129
|
-
import { createTask } from '@
|
|
130
|
-
import { Schema } from '@
|
|
129
|
+
import { createTask } from '@forgehive/task';
|
|
130
|
+
import { Schema } from '@forgehive/schema';
|
|
131
131
|
import path from 'path';
|
|
132
132
|
import fs from 'fs/promises';
|
|
133
133
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema, type SchemaType, type InferSchema } from '@forgehive/schema';
|
|
1
|
+
import { Schema, type SchemaType, type InferSchema, type SchemaDescription } from '@forgehive/schema';
|
|
2
2
|
import { type Mode, type Boundaries, type WrappedBoundaries } from './utils/boundary';
|
|
3
3
|
export interface Task {
|
|
4
4
|
id: string;
|
|
@@ -32,6 +32,9 @@ export interface TaskInstanceType<Func extends BaseFunction = BaseFunction, B ex
|
|
|
32
32
|
setMode: (mode: Mode) => void;
|
|
33
33
|
setSchema: (base: Schema<Record<string, SchemaType>>) => void;
|
|
34
34
|
getSchema: () => Schema<Record<string, SchemaType>> | undefined;
|
|
35
|
+
setDescription: (description: string) => void;
|
|
36
|
+
getDescription: () => string | undefined;
|
|
37
|
+
describe: () => SchemaDescription;
|
|
35
38
|
validate: <T extends Record<string, unknown> = Parameters<Func>[0]>(argv?: T) => ReturnType<Schema<Record<string, SchemaType>>['safeParse']> | undefined;
|
|
36
39
|
isValid: <T extends Record<string, unknown> = Parameters<Func>[0]>(argv?: T) => boolean;
|
|
37
40
|
addListener: <I = Parameters<Func>[0], O = ReturnType<Func>>(fn: (record: TaskRecord<I, O>) => void) => void;
|
|
@@ -52,6 +55,7 @@ export declare const Task: {
|
|
|
52
55
|
_fn: Func;
|
|
53
56
|
_mode: Mode;
|
|
54
57
|
_coolDown: number;
|
|
58
|
+
_description?: string;
|
|
55
59
|
_boundariesDefinition: B;
|
|
56
60
|
_boundaries: WrappedBoundaries<B>;
|
|
57
61
|
_boundariesData: Record<string, unknown> | null;
|
|
@@ -61,6 +65,9 @@ export declare const Task: {
|
|
|
61
65
|
setMode(mode: Mode): void;
|
|
62
66
|
setSchema(schema: Schema<Record<string, SchemaType>>): void;
|
|
63
67
|
getSchema(): Schema<Record<string, SchemaType>> | undefined;
|
|
68
|
+
setDescription(description: string): void;
|
|
69
|
+
getDescription(): string | undefined;
|
|
70
|
+
describe(): SchemaDescription;
|
|
64
71
|
validate<T extends Record<string, unknown> = Parameters<Func>[0]>(argv?: T): ReturnType<Schema<Record<string, SchemaType>>["safeParse"]> | undefined;
|
|
65
72
|
isValid<T extends Record<string, unknown> = Parameters<Func>[0]>(argv?: T): boolean;
|
|
66
73
|
addListener<I = Parameters<Func>[0], O = ReturnType<Func>>(fn: (record: TaskRecord<I, O>) => void): void;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -47,6 +47,16 @@ const Task = class Task {
|
|
|
47
47
|
getSchema() {
|
|
48
48
|
return this._schema;
|
|
49
49
|
}
|
|
50
|
+
setDescription(description) {
|
|
51
|
+
this._description = description;
|
|
52
|
+
}
|
|
53
|
+
getDescription() {
|
|
54
|
+
return this._description;
|
|
55
|
+
}
|
|
56
|
+
describe() {
|
|
57
|
+
var _a, _b;
|
|
58
|
+
return (_b = (_a = this._schema) === null || _a === void 0 ? void 0 : _a.describe()) !== null && _b !== void 0 ? _b : {};
|
|
59
|
+
}
|
|
50
60
|
validate(argv) {
|
|
51
61
|
if (typeof this._schema === 'undefined') {
|
|
52
62
|
return undefined;
|
|
@@ -145,13 +155,20 @@ const Task = class Task {
|
|
|
145
155
|
this.startRunLog();
|
|
146
156
|
const boundaries = this._boundaries;
|
|
147
157
|
const q = new Promise((resolve, reject) => {
|
|
148
|
-
|
|
149
|
-
if (
|
|
150
|
-
this.
|
|
151
|
-
|
|
152
|
-
error: '
|
|
153
|
-
|
|
154
|
-
|
|
158
|
+
var _a;
|
|
159
|
+
if (this._schema) {
|
|
160
|
+
const validation = this._schema.safeParse(argv);
|
|
161
|
+
if (!validation.success) {
|
|
162
|
+
const errorDetails = (_a = validation.error) === null || _a === void 0 ? void 0 : _a.errors.map(err => `${err.path.join('.')}: ${err.message}`).join(', ');
|
|
163
|
+
const errorMessage = errorDetails
|
|
164
|
+
? `Invalid input on: ${errorDetails}`
|
|
165
|
+
: 'Invalid input';
|
|
166
|
+
this.emit({
|
|
167
|
+
input: argv,
|
|
168
|
+
error: errorMessage
|
|
169
|
+
});
|
|
170
|
+
throw new Error(errorMessage);
|
|
171
|
+
}
|
|
155
172
|
}
|
|
156
173
|
(async () => {
|
|
157
174
|
// Use proper typing for the function call
|
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":"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"}
|
|
@@ -55,7 +55,9 @@ describe('Listener tests', () => {
|
|
|
55
55
|
}
|
|
56
56
|
expect(tape.length).toBe(1);
|
|
57
57
|
expect(tape[0].input).toEqual({ value: 3 });
|
|
58
|
-
expect(tape[0].error).
|
|
58
|
+
expect(tape[0].error).toContain('Invalid input on:');
|
|
59
|
+
expect(tape[0].error).toContain('value:');
|
|
60
|
+
expect(tape[0].error).toContain('Number must be greater than or equal to 5');
|
|
59
61
|
});
|
|
60
62
|
it('Should record multiple records', async () => {
|
|
61
63
|
const tape = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-listener.test.js","sourceRoot":"","sources":["../../src/test/add-listener.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"add-listener.test.js","sourceRoot":"","sources":["../../src/test/add-listener.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,20 @@ describe('Validation tests', () => {
|
|
|
29
29
|
expect('no error thrown').toBeUndefined();
|
|
30
30
|
}
|
|
31
31
|
catch (e) {
|
|
32
|
-
|
|
33
|
-
expect(
|
|
32
|
+
const error = e;
|
|
33
|
+
expect(error.message).toEqual('Invalid input on: value: Expected number, received null');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
it('Should provide detailed error messages', async () => {
|
|
37
|
+
try {
|
|
38
|
+
await task.run({ value: 'null' });
|
|
39
|
+
// If we get here, the test should fail
|
|
40
|
+
expect('no error thrown').toBeUndefined();
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
const error = e;
|
|
44
|
+
// Test the error message format
|
|
45
|
+
expect(error.message).toEqual('Invalid input on: value: Expected number, received string');
|
|
34
46
|
}
|
|
35
47
|
});
|
|
36
48
|
it('Should work well', async () => {
|
|
@@ -42,7 +54,7 @@ describe('Validation tests on param', () => {
|
|
|
42
54
|
let task;
|
|
43
55
|
beforeEach(() => {
|
|
44
56
|
const schema = new schema_1.Schema({
|
|
45
|
-
|
|
57
|
+
name: schema_1.Schema.string()
|
|
46
58
|
});
|
|
47
59
|
task = new index_1.Task(function (argv) {
|
|
48
60
|
return argv;
|
|
@@ -51,32 +63,27 @@ describe('Validation tests on param', () => {
|
|
|
51
63
|
});
|
|
52
64
|
});
|
|
53
65
|
it('Should be invalid', () => {
|
|
54
|
-
const check = task.isValid({
|
|
66
|
+
const check = task.isValid({ name: null });
|
|
55
67
|
expect(check).toBe(false);
|
|
56
68
|
});
|
|
57
69
|
it('Should be valid', () => {
|
|
58
|
-
const check = task.isValid({
|
|
70
|
+
const check = task.isValid({ name: 'John Doe' });
|
|
59
71
|
expect(check).toBe(true);
|
|
60
72
|
});
|
|
61
73
|
it('Should validate data as part of run function', async () => {
|
|
62
74
|
try {
|
|
63
|
-
await task.run({
|
|
75
|
+
await task.run({ name: null });
|
|
64
76
|
// If we get here, the test should fail
|
|
65
77
|
expect('no error thrown').toBeUndefined();
|
|
66
78
|
}
|
|
67
79
|
catch (e) {
|
|
68
|
-
|
|
69
|
-
expect(
|
|
80
|
+
const error = e;
|
|
81
|
+
expect(error.message).toEqual('Invalid input on: name: Expected string, received null');
|
|
70
82
|
}
|
|
71
83
|
});
|
|
72
84
|
it('Should work well', async () => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
expect(result.value).toBe(5);
|
|
76
|
-
}
|
|
77
|
-
catch (e) {
|
|
78
|
-
expect('error thrown: ' + e).toBeUndefined();
|
|
79
|
-
}
|
|
85
|
+
const result = await task.run({ name: 'John Doe' });
|
|
86
|
+
expect(result.name).toBe('John Doe');
|
|
80
87
|
});
|
|
81
88
|
});
|
|
82
89
|
describe('Validation multiple values tests', () => {
|
|
@@ -99,8 +106,8 @@ describe('Validation multiple values tests', () => {
|
|
|
99
106
|
expect('no error thrown').toBeUndefined();
|
|
100
107
|
}
|
|
101
108
|
catch (e) {
|
|
102
|
-
|
|
103
|
-
expect(
|
|
109
|
+
const error = e;
|
|
110
|
+
expect(error.message).toEqual('Invalid input on: value: Expected number, received null, increment: Required');
|
|
104
111
|
}
|
|
105
112
|
});
|
|
106
113
|
it('Should be on both invalid but fail in increment', async () => {
|
|
@@ -110,8 +117,8 @@ describe('Validation multiple values tests', () => {
|
|
|
110
117
|
expect('no error thrown').toBeUndefined();
|
|
111
118
|
}
|
|
112
119
|
catch (e) {
|
|
113
|
-
|
|
114
|
-
expect(
|
|
120
|
+
const error = e;
|
|
121
|
+
expect(error.message).toEqual('Invalid input on: increment: Required');
|
|
115
122
|
}
|
|
116
123
|
});
|
|
117
124
|
it('Should work well', async () => {
|
|
@@ -163,4 +170,155 @@ describe('Set Schema', () => {
|
|
|
163
170
|
expect(schema).toBeUndefined();
|
|
164
171
|
});
|
|
165
172
|
});
|
|
173
|
+
describe('Multiple validation errors', () => {
|
|
174
|
+
let task;
|
|
175
|
+
beforeEach(() => {
|
|
176
|
+
const schema = new schema_1.Schema({
|
|
177
|
+
name: schema_1.Schema.string(),
|
|
178
|
+
age: schema_1.Schema.number(),
|
|
179
|
+
email: schema_1.Schema.string().email()
|
|
180
|
+
});
|
|
181
|
+
task = new index_1.Task(function (argv) {
|
|
182
|
+
return argv;
|
|
183
|
+
}, {
|
|
184
|
+
schema
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
it('Should report all validation errors', async () => {
|
|
188
|
+
try {
|
|
189
|
+
await task.run({ name: 123, age: 'twenty', email: 'invalid-email' });
|
|
190
|
+
// If we get here, the test should fail
|
|
191
|
+
expect('no error thrown').toBeUndefined();
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
const error = e;
|
|
195
|
+
// Test that multiple errors are reported
|
|
196
|
+
expect(error.message).toContain('Invalid input on');
|
|
197
|
+
expect(error.message).toContain('name: Expected string, received number');
|
|
198
|
+
expect(error.message).toContain('age: Expected number, received string');
|
|
199
|
+
expect(error.message).toContain('email: Invalid email');
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
describe('Array validation tests', () => {
|
|
204
|
+
let task;
|
|
205
|
+
beforeEach(() => {
|
|
206
|
+
const schema = new schema_1.Schema({
|
|
207
|
+
tags: schema_1.Schema.array(schema_1.Schema.string())
|
|
208
|
+
});
|
|
209
|
+
task = new index_1.Task(function (argv) {
|
|
210
|
+
return argv;
|
|
211
|
+
}, {
|
|
212
|
+
schema
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
it('Should be invalid with non-array value', () => {
|
|
216
|
+
const check = task.isValid({ tags: 'not an array' });
|
|
217
|
+
expect(check).toBe(false);
|
|
218
|
+
});
|
|
219
|
+
it('Should be invalid with array containing non-string items', () => {
|
|
220
|
+
const check = task.isValid({ tags: ['valid', 123, true] });
|
|
221
|
+
expect(check).toBe(false);
|
|
222
|
+
});
|
|
223
|
+
it('Should be valid with string array', () => {
|
|
224
|
+
const check = task.isValid({ tags: ['tag1', 'tag2', 'tag3'] });
|
|
225
|
+
expect(check).toBe(true);
|
|
226
|
+
});
|
|
227
|
+
it('Should validate array data on run', async () => {
|
|
228
|
+
try {
|
|
229
|
+
await task.run({ tags: 'not an array' });
|
|
230
|
+
// If we get here, the test should fail
|
|
231
|
+
expect('no error thrown').toBeUndefined();
|
|
232
|
+
}
|
|
233
|
+
catch (e) {
|
|
234
|
+
const error = e;
|
|
235
|
+
expect(error.message).toEqual('Invalid input on: tags: Expected array, received string');
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
it('Should validate array items on run', async () => {
|
|
239
|
+
try {
|
|
240
|
+
await task.run({ tags: ['valid', 123, true] });
|
|
241
|
+
// If we get here, the test should fail
|
|
242
|
+
expect('no error thrown').toBeUndefined();
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
const error = e;
|
|
246
|
+
expect(error.message).toContain('Invalid input on');
|
|
247
|
+
expect(error.message).toContain('tags.1: Expected string, received number');
|
|
248
|
+
expect(error.message).toContain('tags.2: Expected string, received boolean');
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
it('Should work with valid string array', async () => {
|
|
252
|
+
const result = await task.run({ tags: ['tag1', 'tag2', 'tag3'] });
|
|
253
|
+
expect(result.tags).toEqual(['tag1', 'tag2', 'tag3']);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
describe('MixedRecord validation tests', () => {
|
|
257
|
+
let task;
|
|
258
|
+
beforeEach(() => {
|
|
259
|
+
const schema = new schema_1.Schema({
|
|
260
|
+
metadata: schema_1.Schema.mixedRecord()
|
|
261
|
+
});
|
|
262
|
+
task = new index_1.Task(function (argv) {
|
|
263
|
+
return argv;
|
|
264
|
+
}, {
|
|
265
|
+
schema
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
it('Should be invalid with non-object value', () => {
|
|
269
|
+
const check = task.isValid({ metadata: 'not an object' });
|
|
270
|
+
expect(check).toBe(false);
|
|
271
|
+
});
|
|
272
|
+
it('Should be invalid with non-string keys', () => {
|
|
273
|
+
// In JavaScript, object keys are always coerced to strings, so this actually becomes a valid record
|
|
274
|
+
// with a string key "123"
|
|
275
|
+
const check = task.isValid({ metadata: { 123: 'value' } });
|
|
276
|
+
expect(check).toBe(true);
|
|
277
|
+
});
|
|
278
|
+
it('Should be valid with mixed value types', () => {
|
|
279
|
+
const check = task.isValid({
|
|
280
|
+
metadata: {
|
|
281
|
+
stringValue: 'text',
|
|
282
|
+
numberValue: 42,
|
|
283
|
+
booleanValue: true
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
expect(check).toBe(true);
|
|
287
|
+
});
|
|
288
|
+
it('Should validate record type on run', async () => {
|
|
289
|
+
try {
|
|
290
|
+
await task.run({ metadata: 'not an object' });
|
|
291
|
+
// If we get here, the test should fail
|
|
292
|
+
expect('no error thrown').toBeUndefined();
|
|
293
|
+
}
|
|
294
|
+
catch (e) {
|
|
295
|
+
const error = e;
|
|
296
|
+
expect(error.message).toEqual('Invalid input on: metadata: Expected object, received string');
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
it('Should validate value types on run', async () => {
|
|
300
|
+
try {
|
|
301
|
+
await task.run({ metadata: { valid: 'string', invalid: { nested: 'object' } } });
|
|
302
|
+
// If we get here, the test should fail
|
|
303
|
+
expect('no error thrown').toBeUndefined();
|
|
304
|
+
}
|
|
305
|
+
catch (e) {
|
|
306
|
+
const error = e;
|
|
307
|
+
expect(error.message).toContain('Invalid input on');
|
|
308
|
+
// The actual error message from Zod for this case
|
|
309
|
+
expect(error.message).toContain('metadata.invalid: Invalid input');
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
it('Should work with valid mixed record', async () => {
|
|
313
|
+
const validData = {
|
|
314
|
+
metadata: {
|
|
315
|
+
stringValue: 'text',
|
|
316
|
+
numberValue: 42,
|
|
317
|
+
booleanValue: true
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
const result = await task.run(validData);
|
|
321
|
+
expect(result).toEqual(validData);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
166
324
|
//# sourceMappingURL=validation.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/test/validation.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/test/validation.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgehive/task",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@forgehive/schema": "0.1.
|
|
15
|
+
"@forgehive/schema": "0.1.4"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/jest": "^29.5.12",
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Schema, type SchemaType, type InferSchema } from '@forgehive/schema'
|
|
1
|
+
import { Schema, type SchemaType, type InferSchema, type SchemaDescription } from '@forgehive/schema'
|
|
2
2
|
import { createBoundary, type Mode, type Boundaries, type WrappedBoundaries, type WrappedBoundaryFunction } from './utils/boundary'
|
|
3
3
|
|
|
4
4
|
export interface Task {
|
|
@@ -42,6 +42,9 @@ export interface TaskInstanceType<Func extends BaseFunction = BaseFunction, B ex
|
|
|
42
42
|
setMode: (mode: Mode) => void
|
|
43
43
|
setSchema: (base: Schema<Record<string, SchemaType>>) => void
|
|
44
44
|
getSchema: () => Schema<Record<string, SchemaType>> | undefined
|
|
45
|
+
setDescription: (description: string) => void
|
|
46
|
+
getDescription: () => string | undefined
|
|
47
|
+
describe: () => SchemaDescription
|
|
45
48
|
|
|
46
49
|
// Validation methos
|
|
47
50
|
validate: <T extends Record<string, unknown> = Parameters<Func>[0]>(argv?: T) => ReturnType<Schema<Record<string, SchemaType>>['safeParse']> | undefined
|
|
@@ -78,6 +81,7 @@ export const Task = class Task<
|
|
|
78
81
|
_fn: Func
|
|
79
82
|
_mode: Mode
|
|
80
83
|
_coolDown: number
|
|
84
|
+
_description?: string
|
|
81
85
|
|
|
82
86
|
_boundariesDefinition: B
|
|
83
87
|
_boundaries: WrappedBoundaries<B>
|
|
@@ -137,6 +141,18 @@ export const Task = class Task<
|
|
|
137
141
|
return this._schema
|
|
138
142
|
}
|
|
139
143
|
|
|
144
|
+
setDescription(description: string): void {
|
|
145
|
+
this._description = description
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
getDescription(): string | undefined {
|
|
149
|
+
return this._description
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
describe(): SchemaDescription {
|
|
153
|
+
return this._schema?.describe() ?? {}
|
|
154
|
+
}
|
|
155
|
+
|
|
140
156
|
validate<T extends Record<string, unknown> = Parameters<Func>[0]>(argv?: T): ReturnType<Schema<Record<string, SchemaType>>['safeParse']> | undefined {
|
|
141
157
|
if (typeof this._schema === 'undefined') {
|
|
142
158
|
return undefined
|
|
@@ -276,15 +292,25 @@ export const Task = class Task<
|
|
|
276
292
|
const boundaries = this._boundaries
|
|
277
293
|
|
|
278
294
|
const q = new Promise<ReturnType<Func>>((resolve, reject) => {
|
|
279
|
-
|
|
295
|
+
if (this._schema) {
|
|
296
|
+
const validation = this._schema.safeParse(argv)
|
|
280
297
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
298
|
+
if (!validation.success) {
|
|
299
|
+
const errorDetails = validation.error?.errors.map(err =>
|
|
300
|
+
`${err.path.join('.')}: ${err.message}`
|
|
301
|
+
).join(', ')
|
|
302
|
+
|
|
303
|
+
const errorMessage = errorDetails
|
|
304
|
+
? `Invalid input on: ${errorDetails}`
|
|
305
|
+
: 'Invalid input'
|
|
306
|
+
|
|
307
|
+
this.emit({
|
|
308
|
+
input: argv,
|
|
309
|
+
error: errorMessage
|
|
310
|
+
})
|
|
286
311
|
|
|
287
|
-
|
|
312
|
+
throw new Error(errorMessage)
|
|
313
|
+
}
|
|
288
314
|
}
|
|
289
315
|
|
|
290
316
|
(async (): Promise<ReturnType<Func>> => {
|
|
@@ -64,7 +64,9 @@ describe('Listener tests', () => {
|
|
|
64
64
|
|
|
65
65
|
expect(tape.length).toBe(1)
|
|
66
66
|
expect(tape[0].input).toEqual({ value: 3 })
|
|
67
|
-
expect(tape[0].error).
|
|
67
|
+
expect(tape[0].error).toContain('Invalid input on:')
|
|
68
|
+
expect(tape[0].error).toContain('value:')
|
|
69
|
+
expect(tape[0].error).toContain('Number must be greater than or equal to 5')
|
|
68
70
|
})
|
|
69
71
|
|
|
70
72
|
it('Should record multiple records', async () => {
|
|
@@ -34,8 +34,22 @@ describe('Validation tests', () => {
|
|
|
34
34
|
// If we get here, the test should fail
|
|
35
35
|
expect('no error thrown').toBeUndefined()
|
|
36
36
|
} catch (e) {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const error = e as Error
|
|
38
|
+
|
|
39
|
+
expect(error.message).toEqual('Invalid input on: value: Expected number, received null')
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('Should provide detailed error messages', async () => {
|
|
44
|
+
try {
|
|
45
|
+
await task.run({ value: 'null' })
|
|
46
|
+
// If we get here, the test should fail
|
|
47
|
+
expect('no error thrown').toBeUndefined()
|
|
48
|
+
} catch (e: unknown) {
|
|
49
|
+
const error = e as Error
|
|
50
|
+
|
|
51
|
+
// Test the error message format
|
|
52
|
+
expect(error.message).toEqual('Invalid input on: value: Expected number, received string')
|
|
39
53
|
}
|
|
40
54
|
})
|
|
41
55
|
|
|
@@ -50,7 +64,7 @@ describe('Validation tests on param', () => {
|
|
|
50
64
|
|
|
51
65
|
beforeEach(() => {
|
|
52
66
|
const schema = new Schema({
|
|
53
|
-
|
|
67
|
+
name: Schema.string()
|
|
54
68
|
})
|
|
55
69
|
|
|
56
70
|
task = new Task(function (argv: InferSchema<typeof schema>) {
|
|
@@ -61,35 +75,32 @@ describe('Validation tests on param', () => {
|
|
|
61
75
|
})
|
|
62
76
|
|
|
63
77
|
it('Should be invalid', () => {
|
|
64
|
-
const check = task.isValid({
|
|
78
|
+
const check = task.isValid({ name: null })
|
|
65
79
|
|
|
66
80
|
expect(check).toBe(false)
|
|
67
81
|
})
|
|
68
82
|
|
|
69
83
|
it('Should be valid', () => {
|
|
70
|
-
const check = task.isValid({
|
|
84
|
+
const check = task.isValid({ name: 'John Doe' })
|
|
71
85
|
|
|
72
86
|
expect(check).toBe(true)
|
|
73
87
|
})
|
|
74
88
|
|
|
75
89
|
it('Should validate data as part of run function', async () => {
|
|
76
90
|
try {
|
|
77
|
-
await task.run({
|
|
91
|
+
await task.run({ name: null })
|
|
78
92
|
// If we get here, the test should fail
|
|
79
93
|
expect('no error thrown').toBeUndefined()
|
|
80
94
|
} catch (e) {
|
|
81
|
-
|
|
82
|
-
expect(
|
|
95
|
+
const error = e as Error
|
|
96
|
+
expect(error.message).toEqual('Invalid input on: name: Expected string, received null')
|
|
83
97
|
}
|
|
84
98
|
})
|
|
85
99
|
|
|
86
100
|
it('Should work well', async () => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
} catch (e) {
|
|
91
|
-
expect('error thrown: ' + e).toBeUndefined()
|
|
92
|
-
}
|
|
101
|
+
const result = await task.run({ name: 'John Doe' })
|
|
102
|
+
|
|
103
|
+
expect(result.name).toBe('John Doe')
|
|
93
104
|
})
|
|
94
105
|
})
|
|
95
106
|
|
|
@@ -115,8 +126,8 @@ describe('Validation multiple values tests', () => {
|
|
|
115
126
|
// If we get here, the test should fail
|
|
116
127
|
expect('no error thrown').toBeUndefined()
|
|
117
128
|
} catch (e) {
|
|
118
|
-
|
|
119
|
-
expect(
|
|
129
|
+
const error = e as Error
|
|
130
|
+
expect(error.message).toEqual('Invalid input on: value: Expected number, received null, increment: Required')
|
|
120
131
|
}
|
|
121
132
|
})
|
|
122
133
|
|
|
@@ -126,8 +137,8 @@ describe('Validation multiple values tests', () => {
|
|
|
126
137
|
// If we get here, the test should fail
|
|
127
138
|
expect('no error thrown').toBeUndefined()
|
|
128
139
|
} catch (e) {
|
|
129
|
-
|
|
130
|
-
expect(
|
|
140
|
+
const error = e as Error
|
|
141
|
+
expect(error.message).toEqual('Invalid input on: increment: Required')
|
|
131
142
|
}
|
|
132
143
|
})
|
|
133
144
|
|
|
@@ -192,3 +203,171 @@ describe('Set Schema', () => {
|
|
|
192
203
|
expect(schema).toBeUndefined()
|
|
193
204
|
})
|
|
194
205
|
})
|
|
206
|
+
|
|
207
|
+
describe('Multiple validation errors', () => {
|
|
208
|
+
let task: TaskInstanceType
|
|
209
|
+
|
|
210
|
+
beforeEach(() => {
|
|
211
|
+
const schema = new Schema({
|
|
212
|
+
name: Schema.string(),
|
|
213
|
+
age: Schema.number(),
|
|
214
|
+
email: Schema.string().email()
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
task = new Task(function (argv: InferSchema<typeof schema>) {
|
|
218
|
+
return argv
|
|
219
|
+
}, {
|
|
220
|
+
schema
|
|
221
|
+
})
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
it('Should report all validation errors', async () => {
|
|
225
|
+
try {
|
|
226
|
+
await task.run({ name: 123, age: 'twenty', email: 'invalid-email' })
|
|
227
|
+
// If we get here, the test should fail
|
|
228
|
+
expect('no error thrown').toBeUndefined()
|
|
229
|
+
} catch (e: unknown) {
|
|
230
|
+
const error = e as Error
|
|
231
|
+
// Test that multiple errors are reported
|
|
232
|
+
expect(error.message).toContain('Invalid input on')
|
|
233
|
+
expect(error.message).toContain('name: Expected string, received number')
|
|
234
|
+
expect(error.message).toContain('age: Expected number, received string')
|
|
235
|
+
expect(error.message).toContain('email: Invalid email')
|
|
236
|
+
}
|
|
237
|
+
})
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
describe('Array validation tests', () => {
|
|
241
|
+
let task: TaskInstanceType
|
|
242
|
+
|
|
243
|
+
beforeEach(() => {
|
|
244
|
+
const schema = new Schema({
|
|
245
|
+
tags: Schema.array(Schema.string())
|
|
246
|
+
})
|
|
247
|
+
|
|
248
|
+
task = new Task(function (argv: InferSchema<typeof schema>) {
|
|
249
|
+
return argv
|
|
250
|
+
}, {
|
|
251
|
+
schema
|
|
252
|
+
})
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
it('Should be invalid with non-array value', () => {
|
|
256
|
+
const check = task.isValid({ tags: 'not an array' })
|
|
257
|
+
expect(check).toBe(false)
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
it('Should be invalid with array containing non-string items', () => {
|
|
261
|
+
const check = task.isValid({ tags: ['valid', 123, true] })
|
|
262
|
+
expect(check).toBe(false)
|
|
263
|
+
})
|
|
264
|
+
|
|
265
|
+
it('Should be valid with string array', () => {
|
|
266
|
+
const check = task.isValid({ tags: ['tag1', 'tag2', 'tag3'] })
|
|
267
|
+
expect(check).toBe(true)
|
|
268
|
+
})
|
|
269
|
+
|
|
270
|
+
it('Should validate array data on run', async () => {
|
|
271
|
+
try {
|
|
272
|
+
await task.run({ tags: 'not an array' })
|
|
273
|
+
// If we get here, the test should fail
|
|
274
|
+
expect('no error thrown').toBeUndefined()
|
|
275
|
+
} catch (e) {
|
|
276
|
+
const error = e as Error
|
|
277
|
+
expect(error.message).toEqual('Invalid input on: tags: Expected array, received string')
|
|
278
|
+
}
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
it('Should validate array items on run', async () => {
|
|
282
|
+
try {
|
|
283
|
+
await task.run({ tags: ['valid', 123, true] })
|
|
284
|
+
// If we get here, the test should fail
|
|
285
|
+
expect('no error thrown').toBeUndefined()
|
|
286
|
+
} catch (e) {
|
|
287
|
+
const error = e as Error
|
|
288
|
+
expect(error.message).toContain('Invalid input on')
|
|
289
|
+
expect(error.message).toContain('tags.1: Expected string, received number')
|
|
290
|
+
expect(error.message).toContain('tags.2: Expected string, received boolean')
|
|
291
|
+
}
|
|
292
|
+
})
|
|
293
|
+
|
|
294
|
+
it('Should work with valid string array', async () => {
|
|
295
|
+
const result = await task.run({ tags: ['tag1', 'tag2', 'tag3'] })
|
|
296
|
+
expect(result.tags).toEqual(['tag1', 'tag2', 'tag3'])
|
|
297
|
+
})
|
|
298
|
+
})
|
|
299
|
+
|
|
300
|
+
describe('MixedRecord validation tests', () => {
|
|
301
|
+
let task: TaskInstanceType
|
|
302
|
+
|
|
303
|
+
beforeEach(() => {
|
|
304
|
+
const schema = new Schema({
|
|
305
|
+
metadata: Schema.mixedRecord()
|
|
306
|
+
})
|
|
307
|
+
|
|
308
|
+
task = new Task(function (argv: InferSchema<typeof schema>) {
|
|
309
|
+
return argv
|
|
310
|
+
}, {
|
|
311
|
+
schema
|
|
312
|
+
})
|
|
313
|
+
})
|
|
314
|
+
|
|
315
|
+
it('Should be invalid with non-object value', () => {
|
|
316
|
+
const check = task.isValid({ metadata: 'not an object' })
|
|
317
|
+
expect(check).toBe(false)
|
|
318
|
+
})
|
|
319
|
+
|
|
320
|
+
it('Should be invalid with non-string keys', () => {
|
|
321
|
+
// In JavaScript, object keys are always coerced to strings, so this actually becomes a valid record
|
|
322
|
+
// with a string key "123"
|
|
323
|
+
const check = task.isValid({ metadata: { 123: 'value' }})
|
|
324
|
+
expect(check).toBe(true)
|
|
325
|
+
})
|
|
326
|
+
|
|
327
|
+
it('Should be valid with mixed value types', () => {
|
|
328
|
+
const check = task.isValid({
|
|
329
|
+
metadata: {
|
|
330
|
+
stringValue: 'text',
|
|
331
|
+
numberValue: 42,
|
|
332
|
+
booleanValue: true
|
|
333
|
+
}
|
|
334
|
+
})
|
|
335
|
+
expect(check).toBe(true)
|
|
336
|
+
})
|
|
337
|
+
|
|
338
|
+
it('Should validate record type on run', async () => {
|
|
339
|
+
try {
|
|
340
|
+
await task.run({ metadata: 'not an object' })
|
|
341
|
+
// If we get here, the test should fail
|
|
342
|
+
expect('no error thrown').toBeUndefined()
|
|
343
|
+
} catch (e) {
|
|
344
|
+
const error = e as Error
|
|
345
|
+
expect(error.message).toEqual('Invalid input on: metadata: Expected object, received string')
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
|
|
349
|
+
it('Should validate value types on run', async () => {
|
|
350
|
+
try {
|
|
351
|
+
await task.run({ metadata: { valid: 'string', invalid: { nested: 'object' } }})
|
|
352
|
+
// If we get here, the test should fail
|
|
353
|
+
expect('no error thrown').toBeUndefined()
|
|
354
|
+
} catch (e) {
|
|
355
|
+
const error = e as Error
|
|
356
|
+
expect(error.message).toContain('Invalid input on')
|
|
357
|
+
// The actual error message from Zod for this case
|
|
358
|
+
expect(error.message).toContain('metadata.invalid: Invalid input')
|
|
359
|
+
}
|
|
360
|
+
})
|
|
361
|
+
|
|
362
|
+
it('Should work with valid mixed record', async () => {
|
|
363
|
+
const validData = {
|
|
364
|
+
metadata: {
|
|
365
|
+
stringValue: 'text',
|
|
366
|
+
numberValue: 42,
|
|
367
|
+
booleanValue: true
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
const result = await task.run(validData)
|
|
371
|
+
expect(result).toEqual(validData)
|
|
372
|
+
})
|
|
373
|
+
})
|