@botpress/cli 1.4.3 ā 1.4.4
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/.turbo/turbo-build.log +10 -10
- package/dist/linter/ruleset-tests/bot.ruleset.test.js +58 -56
- package/dist/linter/ruleset-tests/bot.ruleset.test.js.map +2 -2
- package/dist/linter/ruleset-tests/integration.ruleset.test.js +110 -117
- package/dist/linter/ruleset-tests/integration.ruleset.test.js.map +2 -2
- package/dist/linter/ruleset-tests/interface.ruleset.test.js +76 -84
- package/dist/linter/ruleset-tests/interface.ruleset.test.js.map +2 -2
- package/dist/linter/rulesets/bot.ruleset.js +8 -8
- package/dist/linter/rulesets/bot.ruleset.js.map +2 -2
- package/dist/linter/rulesets/integration.ruleset.js +14 -14
- package/dist/linter/rulesets/integration.ruleset.js.map +2 -2
- package/dist/linter/rulesets/interface.ruleset.js +8 -8
- package/dist/linter/rulesets/interface.ruleset.js.map +1 -1
- package/package.json +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
|
|
2
|
-
> @botpress/cli@1.4.
|
|
2
|
+
> @botpress/cli@1.4.4 build /home/runner/work/botpress/botpress/packages/cli
|
|
3
3
|
> pnpm run bundle && pnpm run template:gen
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @botpress/cli@1.4.
|
|
6
|
+
> @botpress/cli@1.4.4 bundle /home/runner/work/botpress/botpress/packages/cli
|
|
7
7
|
> ts-node -T build.ts
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
> @botpress/cli@1.4.
|
|
10
|
+
> @botpress/cli@1.4.4 template:gen /home/runner/work/botpress/botpress/packages/cli
|
|
11
11
|
> pnpm -r --stream -F @bp-templates/* exec bp gen
|
|
12
12
|
|
|
13
|
-
š¤ Botpress CLI v1.4.
|
|
14
|
-
š¤ Botpress CLI v1.4.
|
|
15
|
-
š¤ Botpress CLI v1.4.
|
|
16
|
-
š¤ Botpress CLI v1.4.
|
|
17
|
-
[2K[1Gā Generating typings for
|
|
18
|
-
[2K[1Gā Generating typings for integration empty-integration...[2K[1Gā Typings available at .botpress
|
|
19
|
-
[2K[1Gā Typings available at .botpress
|
|
13
|
+
š¤ Botpress CLI v1.4.4
|
|
14
|
+
š¤ Botpress CLI v1.4.4
|
|
15
|
+
š¤ Botpress CLI v1.4.4
|
|
16
|
+
š¤ Botpress CLI v1.4.4
|
|
17
|
+
[2K[1Gā Generating typings for bot...[2K[1Gā Typings available at .botpress
|
|
18
|
+
[2K[1Gā Generating typings for integration webhook-message...[2K[1Gā Generating typings for integration empty-integration...[2K[1Gā Typings available at .botpress
|
|
19
|
+
[2K[1Gā Generating typings for integration hello-world...[2K[1Gā Typings available at .botpress
|
|
20
20
|
[2K[1Gā Typings available at .botpress
|
|
@@ -7,35 +7,37 @@ const EMPTY_STRING = "";
|
|
|
7
7
|
const TRUTHY_STRING = "truthy";
|
|
8
8
|
const EVENT_NAME = "eventName";
|
|
9
9
|
const PARAM_NAME = "paramName";
|
|
10
|
+
const PROPERTIES_PARAM = "properties";
|
|
11
|
+
const PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM];
|
|
10
12
|
const TAG_NAME = "tagName";
|
|
11
13
|
const STATE_NAME = "stateName";
|
|
12
14
|
const ZUI = "x-zui";
|
|
13
15
|
const LEGACY_ZUI = "ui";
|
|
14
16
|
describeRule("event-outputparams-should-have-title", (lint) => {
|
|
15
|
-
|
|
17
|
+
import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
|
|
16
18
|
const definition = {
|
|
17
|
-
events: { [EVENT_NAME]: { schema: { properties: { [
|
|
19
|
+
events: { [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } }
|
|
18
20
|
};
|
|
19
21
|
const results = await lint(definition);
|
|
20
22
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
21
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties",
|
|
23
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName, ZUI]);
|
|
22
24
|
(0, import_vitest.expect)(results[0]?.message).toContain("title");
|
|
23
25
|
});
|
|
24
|
-
|
|
26
|
+
import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
|
|
25
27
|
const definition = {
|
|
26
28
|
events: {
|
|
27
|
-
[EVENT_NAME]: { schema: { properties: { [
|
|
29
|
+
[EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } }
|
|
28
30
|
}
|
|
29
31
|
};
|
|
30
32
|
const results = await lint(definition);
|
|
31
33
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
32
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties",
|
|
34
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName, ZUI, "title"]);
|
|
33
35
|
(0, import_vitest.expect)(results[0]?.message).toContain("title");
|
|
34
36
|
});
|
|
35
|
-
|
|
37
|
+
import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
|
|
36
38
|
const definition = {
|
|
37
39
|
events: {
|
|
38
|
-
[EVENT_NAME]: { schema: { properties: { [
|
|
40
|
+
[EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } }
|
|
39
41
|
}
|
|
40
42
|
};
|
|
41
43
|
const results = await lint(definition);
|
|
@@ -43,30 +45,30 @@ describeRule("event-outputparams-should-have-title", (lint) => {
|
|
|
43
45
|
});
|
|
44
46
|
});
|
|
45
47
|
describeRule("event-outputparams-must-have-description", (lint) => {
|
|
46
|
-
|
|
48
|
+
import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
|
|
47
49
|
const definition = {
|
|
48
|
-
events: { [EVENT_NAME]: { schema: { properties: { [
|
|
50
|
+
events: { [EVENT_NAME]: { schema: { properties: { [paramName]: {} } } } }
|
|
49
51
|
};
|
|
50
52
|
const results = await lint(definition);
|
|
51
53
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
52
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties",
|
|
54
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName]);
|
|
53
55
|
(0, import_vitest.expect)(results[0]?.message).toContain("description");
|
|
54
56
|
});
|
|
55
|
-
|
|
57
|
+
import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
|
|
56
58
|
const definition = {
|
|
57
59
|
events: {
|
|
58
|
-
[EVENT_NAME]: { schema: { properties: { [
|
|
60
|
+
[EVENT_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } }
|
|
59
61
|
}
|
|
60
62
|
};
|
|
61
63
|
const results = await lint(definition);
|
|
62
64
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
63
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties",
|
|
65
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName, "description"]);
|
|
64
66
|
(0, import_vitest.expect)(results[0]?.message).toContain("description");
|
|
65
67
|
});
|
|
66
|
-
|
|
68
|
+
import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
|
|
67
69
|
const definition = {
|
|
68
70
|
events: {
|
|
69
|
-
[EVENT_NAME]: { schema: { properties: { [
|
|
71
|
+
[EVENT_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } }
|
|
70
72
|
}
|
|
71
73
|
};
|
|
72
74
|
const results = await lint(definition);
|
|
@@ -74,54 +76,54 @@ describeRule("event-outputparams-must-have-description", (lint) => {
|
|
|
74
76
|
});
|
|
75
77
|
});
|
|
76
78
|
describeRule("configuration-fields-must-have-a-title", (lint) => {
|
|
77
|
-
|
|
79
|
+
import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
|
|
78
80
|
const definition = {
|
|
79
|
-
configuration: { schema: { properties: { [
|
|
81
|
+
configuration: { schema: { properties: { [paramName]: { [ZUI]: {} } } } }
|
|
80
82
|
};
|
|
81
83
|
const results = await lint(definition);
|
|
82
84
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
83
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties",
|
|
85
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties", paramName, ZUI]);
|
|
84
86
|
(0, import_vitest.expect)(results[0]?.message).toContain("title");
|
|
85
87
|
});
|
|
86
|
-
|
|
88
|
+
import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
|
|
87
89
|
const definition = {
|
|
88
|
-
configuration: { schema: { properties: { [
|
|
90
|
+
configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } }
|
|
89
91
|
};
|
|
90
92
|
const results = await lint(definition);
|
|
91
93
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
92
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties",
|
|
94
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties", paramName, ZUI, "title"]);
|
|
93
95
|
(0, import_vitest.expect)(results[0]?.message).toContain("title");
|
|
94
96
|
});
|
|
95
|
-
|
|
97
|
+
import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
|
|
96
98
|
const definition = {
|
|
97
|
-
configuration: { schema: { properties: { [
|
|
99
|
+
configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } }
|
|
98
100
|
};
|
|
99
101
|
const results = await lint(definition);
|
|
100
102
|
(0, import_vitest.expect)(results).toHaveLength(0);
|
|
101
103
|
});
|
|
102
104
|
});
|
|
103
105
|
describeRule("configuration-fields-must-have-a-description", (lint) => {
|
|
104
|
-
|
|
106
|
+
import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
|
|
105
107
|
const definition = {
|
|
106
|
-
configuration: { schema: { properties: { [
|
|
108
|
+
configuration: { schema: { properties: { [paramName]: {} } } }
|
|
107
109
|
};
|
|
108
110
|
const results = await lint(definition);
|
|
109
111
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
110
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties",
|
|
112
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties", paramName]);
|
|
111
113
|
(0, import_vitest.expect)(results[0]?.message).toContain("description");
|
|
112
114
|
});
|
|
113
|
-
|
|
115
|
+
import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
|
|
114
116
|
const definition = {
|
|
115
|
-
configuration: { schema: { properties: { [
|
|
117
|
+
configuration: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } }
|
|
116
118
|
};
|
|
117
119
|
const results = await lint(definition);
|
|
118
120
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
119
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties",
|
|
121
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["configuration", "schema", "properties", paramName, "description"]);
|
|
120
122
|
(0, import_vitest.expect)(results[0]?.message).toContain("description");
|
|
121
123
|
});
|
|
122
|
-
|
|
124
|
+
import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
|
|
123
125
|
const definition = {
|
|
124
|
-
configuration: { schema: { properties: { [
|
|
126
|
+
configuration: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } }
|
|
125
127
|
};
|
|
126
128
|
const results = await lint(definition);
|
|
127
129
|
(0, import_vitest.expect)(results).toHaveLength(0);
|
|
@@ -274,14 +276,14 @@ describeRule("message-tags-must-have-a-description", (lint) => {
|
|
|
274
276
|
});
|
|
275
277
|
});
|
|
276
278
|
describeRule("legacy-zui-title-should-be-removed", (lint) => {
|
|
277
|
-
|
|
279
|
+
import_vitest.test.each(PARAM_NAMES)("legacy zui title should trigger (%s)", async (paramName) => {
|
|
278
280
|
const definition = {
|
|
279
281
|
configuration: {
|
|
280
|
-
[LEGACY_ZUI]: { [
|
|
282
|
+
[LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } },
|
|
281
283
|
schema: {}
|
|
282
284
|
},
|
|
283
|
-
events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [
|
|
284
|
-
states: { [STATE_NAME]: { [LEGACY_ZUI]: { [
|
|
285
|
+
events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },
|
|
286
|
+
states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } }
|
|
285
287
|
};
|
|
286
288
|
const results = await lint(definition);
|
|
287
289
|
(0, import_vitest.expect)(results).toHaveLength(3);
|
|
@@ -289,14 +291,14 @@ describeRule("legacy-zui-title-should-be-removed", (lint) => {
|
|
|
289
291
|
});
|
|
290
292
|
});
|
|
291
293
|
describeRule("legacy-zui-examples-should-be-removed", (lint) => {
|
|
292
|
-
|
|
294
|
+
import_vitest.test.each(PARAM_NAMES)("legacy zui examples should trigger (%s)", async (paramName) => {
|
|
293
295
|
const definition = {
|
|
294
296
|
configuration: {
|
|
295
|
-
[LEGACY_ZUI]: { [
|
|
297
|
+
[LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } },
|
|
296
298
|
schema: {}
|
|
297
299
|
},
|
|
298
|
-
events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [
|
|
299
|
-
states: { [STATE_NAME]: { [LEGACY_ZUI]: { [
|
|
300
|
+
events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },
|
|
301
|
+
states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } }
|
|
300
302
|
};
|
|
301
303
|
const results = await lint(definition);
|
|
302
304
|
(0, import_vitest.expect)(results).toHaveLength(3);
|
|
@@ -304,50 +306,50 @@ describeRule("legacy-zui-examples-should-be-removed", (lint) => {
|
|
|
304
306
|
});
|
|
305
307
|
});
|
|
306
308
|
describeRule("state-fields-should-have-title", (lint) => {
|
|
307
|
-
|
|
309
|
+
import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
|
|
308
310
|
const definition = {
|
|
309
|
-
states: { [STATE_NAME]: { schema: { properties: { [
|
|
311
|
+
states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } }
|
|
310
312
|
};
|
|
311
313
|
const results = await lint(definition);
|
|
312
314
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
313
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties",
|
|
315
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties", paramName, ZUI]);
|
|
314
316
|
});
|
|
315
|
-
|
|
317
|
+
import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
|
|
316
318
|
const definition = {
|
|
317
|
-
states: { [STATE_NAME]: { schema: { properties: { [
|
|
319
|
+
states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } }
|
|
318
320
|
};
|
|
319
321
|
const results = await lint(definition);
|
|
320
322
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
321
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties",
|
|
323
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties", paramName, ZUI, "title"]);
|
|
322
324
|
});
|
|
323
|
-
|
|
325
|
+
import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
|
|
324
326
|
const definition = {
|
|
325
|
-
states: { [STATE_NAME]: { schema: { properties: { [
|
|
327
|
+
states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } }
|
|
326
328
|
};
|
|
327
329
|
const results = await lint(definition);
|
|
328
330
|
(0, import_vitest.expect)(results).toHaveLength(0);
|
|
329
331
|
});
|
|
330
332
|
});
|
|
331
333
|
describeRule("state-fields-must-have-description", (lint) => {
|
|
332
|
-
|
|
334
|
+
import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
|
|
333
335
|
const definition = {
|
|
334
|
-
states: { [STATE_NAME]: { schema: { properties: { [
|
|
336
|
+
states: { [STATE_NAME]: { schema: { properties: { [paramName]: {} } } } }
|
|
335
337
|
};
|
|
336
338
|
const results = await lint(definition);
|
|
337
339
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
338
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties",
|
|
340
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties", paramName]);
|
|
339
341
|
});
|
|
340
|
-
|
|
342
|
+
import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
|
|
341
343
|
const definition = {
|
|
342
|
-
states: { [STATE_NAME]: { schema: { properties: { [
|
|
344
|
+
states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } }
|
|
343
345
|
};
|
|
344
346
|
const results = await lint(definition);
|
|
345
347
|
(0, import_vitest.expect)(results).toHaveLength(1);
|
|
346
|
-
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties",
|
|
348
|
+
(0, import_vitest.expect)(results[0]?.path).toEqual(["states", STATE_NAME, "schema", "properties", paramName, "description"]);
|
|
347
349
|
});
|
|
348
|
-
|
|
350
|
+
import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
|
|
349
351
|
const definition = {
|
|
350
|
-
states: { [STATE_NAME]: { schema: { properties: { [
|
|
352
|
+
states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } }
|
|
351
353
|
};
|
|
352
354
|
const results = await lint(definition);
|
|
353
355
|
(0, import_vitest.expect)(results).toHaveLength(0);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/linter/ruleset-tests/bot.ruleset.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { test, expect } from 'vitest'\nimport { BOT_RULESET } from '../rulesets/bot.ruleset'\nimport { createDescribeRule, type RecursivePartial } from './common'\nimport { type CreateBotBody } from '../../api/bot-body'\n\ntype PartialDefinition = RecursivePartial<CreateBotBody>\nconst describeRule = createDescribeRule<CreateBotBody>()(BOT_RULESET)\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst EVENT_NAME = 'eventName'\nconst PARAM_NAME = 'paramName'\nconst TAG_NAME = 'tagName'\nconst STATE_NAME = 'stateName'\nconst ZUI = 'x-zui'\nconst LEGACY_ZUI = 'ui'\n\ndescribeRule('event-outputparams-should-have-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [PARAM_NAME]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', PARAM_NAME, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [PARAM_NAME]: { [ZUI]: { title: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', PARAM_NAME, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [PARAM_NAME]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('event-outputparams-must-have-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [PARAM_NAME]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', PARAM_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [PARAM_NAME]: { description: EMPTY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', PARAM_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [PARAM_NAME]: { description: TRUTHY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [PARAM_NAME]: { [ZUI]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', PARAM_NAME, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [PARAM_NAME]: { [ZUI]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', PARAM_NAME, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [PARAM_NAME]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [PARAM_NAME]: {} } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', PARAM_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [PARAM_NAME]: { description: EMPTY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', PARAM_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [PARAM_NAME]: { description: TRUTHY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('legacy-zui-title-should-be-removed', (lint) => {\n test('legacy zui title should trigger', async () => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [PARAM_NAME]: { title: TRUTHY_STRING } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [PARAM_NAME]: { title: TRUTHY_STRING } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [PARAM_NAME]: { title: TRUTHY_STRING } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('.title()')\n })\n})\n\ndescribeRule('legacy-zui-examples-should-be-removed', (lint) => {\n test('legacy zui examples should trigger', async () => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [PARAM_NAME]: { examples: [TRUTHY_STRING] } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [PARAM_NAME]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [PARAM_NAME]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('examples')\n })\n})\n\ndescribeRule('state-fields-should-have-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [PARAM_NAME]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', PARAM_NAME, ZUI])\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [PARAM_NAME]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', PARAM_NAME, ZUI, 'title'])\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [PARAM_NAME]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('state-fields-must-have-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [PARAM_NAME]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', PARAM_NAME])\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [PARAM_NAME]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', PARAM_NAME, 'description'])\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [PARAM_NAME]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { test, expect } from 'vitest'\nimport { BOT_RULESET } from '../rulesets/bot.ruleset'\nimport { createDescribeRule, type RecursivePartial } from './common'\nimport { type CreateBotBody } from '../../api/bot-body'\n\ntype PartialDefinition = RecursivePartial<CreateBotBody>\nconst describeRule = createDescribeRule<CreateBotBody>()(BOT_RULESET)\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst EVENT_NAME = 'eventName'\nconst PARAM_NAME = 'paramName'\nconst PROPERTIES_PARAM = 'properties'\nconst PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM] as const\nconst TAG_NAME = 'tagName'\nconst STATE_NAME = 'stateName'\nconst ZUI = 'x-zui'\nconst LEGACY_ZUI = 'ui'\n\ndescribeRule('event-outputparams-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('event-outputparams-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: {} } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('conversation-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { conversation: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['conversation', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n conversation: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('message-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { message: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['message', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n message: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('legacy-zui-title-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('.title()')\n })\n})\n\ndescribeRule('legacy-zui-examples-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui examples should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(3)\n expect(results[0]?.message).toContain('examples')\n })\n})\n\ndescribeRule('state-fields-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI])\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('state-fields-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName])\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, 'description'])\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialDefinition\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|