@epic-web/workshop-mcp 6.16.8 → 6.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../src/utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { test, expect } from 'vitest';
|
|
2
|
+
import { workshopDirectoryInputSchema } from './utils.js';
|
|
3
|
+
test('workshopDirectoryInputSchema should validate valid string', () => {
|
|
4
|
+
const validInput = '/path/to/workshop';
|
|
5
|
+
const result = workshopDirectoryInputSchema.safeParse(validInput);
|
|
6
|
+
expect(result.success).toBe(true);
|
|
7
|
+
if (result.success) {
|
|
8
|
+
expect(result.data).toBe(validInput);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
test('workshopDirectoryInputSchema should reject non-string input', () => {
|
|
12
|
+
const invalidInputs = [123, true, null, undefined, {}];
|
|
13
|
+
invalidInputs.forEach((input) => {
|
|
14
|
+
const result = workshopDirectoryInputSchema.safeParse(input);
|
|
15
|
+
expect(result.success).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
test('workshopDirectoryInputSchema should accept empty string', () => {
|
|
19
|
+
const emptyString = '';
|
|
20
|
+
const result = workshopDirectoryInputSchema.safeParse(emptyString);
|
|
21
|
+
expect(result.success).toBe(true);
|
|
22
|
+
if (result.success) {
|
|
23
|
+
expect(result.data).toBe(emptyString);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
test('workshopDirectoryInputSchema should accept string with spaces', () => {
|
|
27
|
+
const inputWithSpaces = ' /path/with/spaces ';
|
|
28
|
+
const result = workshopDirectoryInputSchema.safeParse(inputWithSpaces);
|
|
29
|
+
expect(result.success).toBe(true);
|
|
30
|
+
if (result.success) {
|
|
31
|
+
expect(result.data).toBe(inputWithSpaces);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
test('workshopDirectoryInputSchema should accept absolute paths', () => {
|
|
35
|
+
const absolutePaths = [
|
|
36
|
+
'/Users/username/projects/workshop',
|
|
37
|
+
'C:\\Users\\username\\projects\\workshop',
|
|
38
|
+
'/home/user/workshop',
|
|
39
|
+
];
|
|
40
|
+
absolutePaths.forEach((path) => {
|
|
41
|
+
const result = workshopDirectoryInputSchema.safeParse(path);
|
|
42
|
+
expect(result.success).toBe(true);
|
|
43
|
+
if (result.success) {
|
|
44
|
+
expect(result.data).toBe(path);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
test('workshopDirectoryInputSchema should accept relative paths', () => {
|
|
49
|
+
const relativePaths = [
|
|
50
|
+
'./workshop',
|
|
51
|
+
'../workshop',
|
|
52
|
+
'../../workshop',
|
|
53
|
+
'workshop',
|
|
54
|
+
];
|
|
55
|
+
relativePaths.forEach((path) => {
|
|
56
|
+
const result = workshopDirectoryInputSchema.safeParse(path);
|
|
57
|
+
expect(result.success).toBe(true);
|
|
58
|
+
if (result.success) {
|
|
59
|
+
expect(result.data).toBe(path);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/utils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from 'vitest'\nimport { workshopDirectoryInputSchema } from './utils.js'\n\ntest('workshopDirectoryInputSchema should validate valid string', () => {\n\tconst validInput = '/path/to/workshop'\n\tconst result = workshopDirectoryInputSchema.safeParse(validInput)\n\n\texpect(result.success).toBe(true)\n\tif (result.success) {\n\t\texpect(result.data).toBe(validInput)\n\t}\n})\n\ntest('workshopDirectoryInputSchema should reject non-string input', () => {\n\tconst invalidInputs = [123, true, null, undefined, {}]\n\n\tinvalidInputs.forEach((input) => {\n\t\tconst result = workshopDirectoryInputSchema.safeParse(input)\n\t\texpect(result.success).toBe(false)\n\t})\n})\n\ntest('workshopDirectoryInputSchema should accept empty string', () => {\n\tconst emptyString = ''\n\tconst result = workshopDirectoryInputSchema.safeParse(emptyString)\n\n\texpect(result.success).toBe(true)\n\tif (result.success) {\n\t\texpect(result.data).toBe(emptyString)\n\t}\n})\n\ntest('workshopDirectoryInputSchema should accept string with spaces', () => {\n\tconst inputWithSpaces = ' /path/with/spaces '\n\tconst result = workshopDirectoryInputSchema.safeParse(inputWithSpaces)\n\n\texpect(result.success).toBe(true)\n\tif (result.success) {\n\t\texpect(result.data).toBe(inputWithSpaces)\n\t}\n})\n\ntest('workshopDirectoryInputSchema should accept absolute paths', () => {\n\tconst absolutePaths = [\n\t\t'/Users/username/projects/workshop',\n\t\t'C:\\\\Users\\\\username\\\\projects\\\\workshop',\n\t\t'/home/user/workshop',\n\t]\n\n\tabsolutePaths.forEach((path) => {\n\t\tconst result = workshopDirectoryInputSchema.safeParse(path)\n\t\texpect(result.success).toBe(true)\n\t\tif (result.success) {\n\t\t\texpect(result.data).toBe(path)\n\t\t}\n\t})\n})\n\ntest('workshopDirectoryInputSchema should accept relative paths', () => {\n\tconst relativePaths = [\n\t\t'./workshop',\n\t\t'../workshop',\n\t\t'../../workshop',\n\t\t'workshop',\n\t]\n\n\trelativePaths.forEach((path) => {\n\t\tconst result = workshopDirectoryInputSchema.safeParse(path)\n\t\texpect(result.success).toBe(true)\n\t\tif (result.success) {\n\t\t\texpect(result.data).toBe(path)\n\t\t}\n\t})\n})\n"]}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@epic-web/workshop-mcp","version":"6.
|
|
1
|
+
{"name":"@epic-web/workshop-mcp","version":"6.18.0","publishConfig":{"access":"public"},"bin":"./dist/esm/index.js","type":"module","tshy":{"project":"./tsconfig.build.json","dialects":["esm"],"exports":{"./package.json":"./package.json",".":"./dist/esm/index.js"}},"exports":{"./package.json":"./package.json",".":"./dist/esm/index.js"},"files":["dist"],"scripts":{"test":"vitest","dev":"tsx src/index.ts","typecheck":"tsc --noEmit","build":"tshy","inspect":"mcp-inspector","build:watch":"nx watch --projects=@epic-web/workshop-mcp -- nx run \\$NX_PROJECT_NAME:build"},"dependencies":{"@epic-web/invariant":"^1.0.0","@epic-web/workshop-utils":"6.18.0","@modelcontextprotocol/sdk":"^1.14.0","openid-client":"^6.6.2","zod":"^3.25.71"},"devDependencies":{"@modelcontextprotocol/inspector":"^0.16.1","@types/node":"^24.0.10","tshy":"^3.0.2","tsx":"^4.20.3","typescript":"^5.8.3","vitest":"^3.2.4"},"repository":{"type":"git","url":"https://github.com/epicweb-dev/epicshop.git","directory":"packages/workshop-mcp"},"main":"./dist/esm/index.js","module":"./dist/esm/index.js"}
|