mozaic-mcp-server 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/app.module.d.ts +3 -0
  2. package/dist/app.module.d.ts.map +1 -0
  3. package/dist/app.module.js +28 -0
  4. package/dist/app.module.js.map +1 -0
  5. package/dist/auth/auth.guard.d.ts +10 -0
  6. package/dist/auth/auth.guard.d.ts.map +1 -0
  7. package/dist/auth/auth.guard.js +53 -0
  8. package/dist/auth/auth.guard.js.map +1 -0
  9. package/dist/auth/auth.module.d.ts +3 -0
  10. package/dist/auth/auth.module.d.ts.map +1 -0
  11. package/dist/auth/auth.module.js +18 -0
  12. package/dist/auth/auth.module.js.map +1 -0
  13. package/dist/config/configuration.d.ts +18 -0
  14. package/dist/config/configuration.d.ts.map +1 -0
  15. package/dist/config/configuration.js +17 -0
  16. package/dist/config/configuration.js.map +1 -0
  17. package/dist/main.d.ts +2 -0
  18. package/dist/main.d.ts.map +1 -0
  19. package/dist/main.js +55 -0
  20. package/dist/main.js.map +1 -0
  21. package/dist/mcp/mcp.controller.d.ts +27 -0
  22. package/dist/mcp/mcp.controller.d.ts.map +1 -0
  23. package/dist/mcp/mcp.controller.js +102 -0
  24. package/dist/mcp/mcp.controller.js.map +1 -0
  25. package/dist/mcp/mcp.module.d.ts +3 -0
  26. package/dist/mcp/mcp.module.d.ts.map +1 -0
  27. package/dist/mcp/mcp.module.js +20 -0
  28. package/dist/mcp/mcp.module.js.map +1 -0
  29. package/dist/mcp/mcp.service.d.ts +35 -0
  30. package/dist/mcp/mcp.service.d.ts.map +1 -0
  31. package/dist/mcp/mcp.service.js +229 -0
  32. package/dist/mcp/mcp.service.js.map +1 -0
  33. package/dist/tools/generate-freemarker.d.ts +6 -6
  34. package/dist/tools/get-freemarker-info.d.ts +2 -2
  35. package/dist/tools/list-css-utilities.d.ts +1 -1
  36. package/dist/tools/list-freemarker.d.ts +2 -2
  37. package/package.json +17 -3
  38. package/dist/__tests__/sanity-check.test.d.ts +0 -2
  39. package/dist/__tests__/sanity-check.test.d.ts.map +0 -1
  40. package/dist/__tests__/sanity-check.test.js +0 -167
  41. package/dist/__tests__/sanity-check.test.js.map +0 -1
  42. package/dist/__tests__/skills-scripts.test.d.ts +0 -2
  43. package/dist/__tests__/skills-scripts.test.d.ts.map +0 -1
  44. package/dist/__tests__/skills-scripts.test.js +0 -404
  45. package/dist/__tests__/skills-scripts.test.js.map +0 -1
  46. package/dist/__tests__/tools.integration.test.d.ts +0 -2
  47. package/dist/__tests__/tools.integration.test.d.ts.map +0 -1
  48. package/dist/__tests__/tools.integration.test.js +0 -305
  49. package/dist/__tests__/tools.integration.test.js.map +0 -1
  50. package/dist/parsers/__tests__/docs-parser.test.d.ts +0 -2
  51. package/dist/parsers/__tests__/docs-parser.test.d.ts.map +0 -1
  52. package/dist/parsers/__tests__/docs-parser.test.js +0 -251
  53. package/dist/parsers/__tests__/docs-parser.test.js.map +0 -1
  54. package/dist/parsers/__tests__/icons-parser.test.d.ts +0 -2
  55. package/dist/parsers/__tests__/icons-parser.test.d.ts.map +0 -1
  56. package/dist/parsers/__tests__/icons-parser.test.js +0 -169
  57. package/dist/parsers/__tests__/icons-parser.test.js.map +0 -1
  58. package/dist/parsers/__tests__/react-parser.test.d.ts +0 -2
  59. package/dist/parsers/__tests__/react-parser.test.d.ts.map +0 -1
  60. package/dist/parsers/__tests__/react-parser.test.js +0 -274
  61. package/dist/parsers/__tests__/react-parser.test.js.map +0 -1
  62. package/dist/parsers/__tests__/scss-parser.test.d.ts +0 -2
  63. package/dist/parsers/__tests__/scss-parser.test.d.ts.map +0 -1
  64. package/dist/parsers/__tests__/scss-parser.test.js +0 -364
  65. package/dist/parsers/__tests__/scss-parser.test.js.map +0 -1
  66. package/dist/parsers/__tests__/tokens-parser.test.d.ts +0 -2
  67. package/dist/parsers/__tests__/tokens-parser.test.d.ts.map +0 -1
  68. package/dist/parsers/__tests__/tokens-parser.test.js +0 -172
  69. package/dist/parsers/__tests__/tokens-parser.test.js.map +0 -1
  70. package/dist/parsers/__tests__/vue-parser.test.d.ts +0 -2
  71. package/dist/parsers/__tests__/vue-parser.test.d.ts.map +0 -1
  72. package/dist/parsers/__tests__/vue-parser.test.js +0 -207
  73. package/dist/parsers/__tests__/vue-parser.test.js.map +0 -1
@@ -1,305 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll } from "vitest";
2
- import Database from "better-sqlite3";
3
- import { resolve } from "path";
4
- import { handleGetComponentInfo } from "../tools/get-component-info.js";
5
- import { handleGetDesignTokens } from "../tools/get-design-tokens.js";
6
- import { handleSearchDocumentation } from "../tools/search-documentation.js";
7
- import { handleListComponents } from "../tools/list-components.js";
8
- import { handleGetCssUtility } from "../tools/get-css-utility.js";
9
- import { handleListCssUtilities } from "../tools/list-css-utilities.js";
10
- import { handleGetInstallInfo } from "../tools/get-install-info.js";
11
- import { handleGenerateWebComponent } from "../tools/generate-webcomponent.js";
12
- import { handleGetWebComponentInfo } from "../tools/get-webcomponent-info.js";
13
- import { handleListWebComponents } from "../tools/list-webcomponents.js";
14
- describe("MCP Tools Integration Tests", () => {
15
- let db;
16
- beforeAll(() => {
17
- const dbPath = resolve(process.cwd(), "data/mozaic.db");
18
- db = new Database(dbPath, { readonly: true });
19
- });
20
- afterAll(() => {
21
- db.close();
22
- });
23
- describe("get_component_info", () => {
24
- it("returns Button component with props", () => {
25
- const result = handleGetComponentInfo(db, { component: "button" });
26
- const data = JSON.parse(result.content[0].text);
27
- expect(data.name).toBe("MButton");
28
- expect(data.props.length).toBeGreaterThan(0);
29
- expect(data.props.some((p) => p.name === "size" || p.name === "appearance")).toBe(true);
30
- });
31
- it("returns Vue examples by default", () => {
32
- const result = handleGetComponentInfo(db, { component: "button" });
33
- const data = JSON.parse(result.content[0].text);
34
- expect(data.examples.length).toBeGreaterThan(0);
35
- });
36
- it("returns React examples when framework=react", () => {
37
- const result = handleGetComponentInfo(db, { component: "button", framework: "react" });
38
- const data = JSON.parse(result.content[0].text);
39
- // Component name remains the same, but examples are filtered by framework
40
- expect(data.name).toBeDefined();
41
- expect(data.examples).toBeDefined();
42
- });
43
- it("handles MButton prefix", () => {
44
- const result = handleGetComponentInfo(db, { component: "MButton" });
45
- const data = JSON.parse(result.content[0].text);
46
- expect(data.name).toBe("MButton");
47
- });
48
- it("returns error for unknown component", () => {
49
- const result = handleGetComponentInfo(db, { component: "nonexistent" });
50
- expect(result.content[0].text).toContain("Component not found");
51
- });
52
- });
53
- describe("get_design_tokens", () => {
54
- it("returns color tokens", () => {
55
- const result = handleGetDesignTokens(db, { category: "colors" });
56
- const data = JSON.parse(result.content[0].text);
57
- expect(data.length).toBeGreaterThan(100);
58
- expect(data[0]).toHaveProperty("path");
59
- expect(data[0]).toHaveProperty("value");
60
- });
61
- it("returns spacing tokens", () => {
62
- const result = handleGetDesignTokens(db, { category: "spacing" });
63
- const data = JSON.parse(result.content[0].text);
64
- expect(data.length).toBeGreaterThan(10);
65
- expect(data.some((t) => t.path.includes("mu"))).toBe(true);
66
- });
67
- it("formats as CSS variables", () => {
68
- const result = handleGetDesignTokens(db, { category: "spacing", format: "css" });
69
- expect(result.content[0].text).toContain(":root {");
70
- expect(result.content[0].text).toContain("--");
71
- });
72
- it("formats as SCSS variables", () => {
73
- const result = handleGetDesignTokens(db, { category: "spacing", format: "scss" });
74
- expect(result.content[0].text).toContain("$");
75
- });
76
- it("returns all categories when category=all", () => {
77
- const result = handleGetDesignTokens(db, { category: "all" });
78
- const data = JSON.parse(result.content[0].text);
79
- expect(data.length).toBeGreaterThan(500);
80
- });
81
- });
82
- describe("search_documentation", () => {
83
- it("finds button documentation", () => {
84
- const result = handleSearchDocumentation(db, { query: "button" });
85
- const data = JSON.parse(result.content[0].text);
86
- expect(data.results.length).toBeGreaterThan(0);
87
- expect(data.results[0]).toHaveProperty("title");
88
- expect(data.results[0]).toHaveProperty("path");
89
- });
90
- it("returns snippets with highlights", () => {
91
- const result = handleSearchDocumentation(db, { query: "color" });
92
- const data = JSON.parse(result.content[0].text);
93
- expect(data.results.length).toBeGreaterThan(0);
94
- expect(data.results[0]).toHaveProperty("snippet");
95
- });
96
- it("limits results", () => {
97
- const result = handleSearchDocumentation(db, { query: "component", limit: 5 });
98
- const data = JSON.parse(result.content[0].text);
99
- expect(data.results.length).toBeLessThanOrEqual(5);
100
- });
101
- it("handles empty query gracefully", () => {
102
- const result = handleSearchDocumentation(db, { query: "" });
103
- expect(result.content[0].text).toBeDefined();
104
- });
105
- });
106
- describe("list_components", () => {
107
- it("lists all components grouped by category", () => {
108
- const result = handleListComponents(db, {});
109
- const data = JSON.parse(result.content[0].text);
110
- expect(data.total).toBeGreaterThan(80);
111
- expect(data.categories.length).toBeGreaterThan(3);
112
- // When category="all", components is grouped object
113
- expect(data.components).toBeDefined();
114
- });
115
- it("includes action category components", () => {
116
- const result = handleListComponents(db, {});
117
- const data = JSON.parse(result.content[0].text);
118
- expect(data.components.action).toBeDefined();
119
- expect(data.components.action.some((c) => c.name === "MButton" || c.name === "Button")).toBe(true);
120
- });
121
- it("filters by category", () => {
122
- const result = handleListComponents(db, { category: "action" });
123
- const data = JSON.parse(result.content[0].text);
124
- expect(data.total).toBeGreaterThan(0);
125
- // When filtered, components is array
126
- expect(Array.isArray(data.components)).toBe(true);
127
- });
128
- });
129
- describe("get_css_utility", () => {
130
- it("returns Flexy utility with classes", () => {
131
- const result = handleGetCssUtility(db, { name: "flexy" });
132
- const data = JSON.parse(result.content[0].text);
133
- expect(data.name).toBe("Flexy");
134
- expect(data.classes.length).toBeGreaterThan(100);
135
- expect(data.classes.some((c) => c.includes("ml-flexy"))).toBe(true);
136
- });
137
- it("returns Margin utility", () => {
138
- const result = handleGetCssUtility(db, { name: "margin" });
139
- const data = JSON.parse(result.content[0].text);
140
- expect(data.name).toBe("Margin");
141
- expect(data.classes.length).toBeGreaterThan(50);
142
- });
143
- it("returns examples", () => {
144
- const result = handleGetCssUtility(db, { name: "flexy" });
145
- const data = JSON.parse(result.content[0].text);
146
- expect(data.examples.length).toBeGreaterThan(0);
147
- });
148
- it("returns error for unknown utility", () => {
149
- const result = handleGetCssUtility(db, { name: "nonexistent" });
150
- expect(result.content[0].text).toContain("not found");
151
- });
152
- });
153
- describe("list_css_utilities", () => {
154
- it("lists all utilities", () => {
155
- const result = handleListCssUtilities(db, {});
156
- const data = JSON.parse(result.content[0].text);
157
- // Returns array directly, not { utilities: [...] }
158
- expect(data.length).toBe(6);
159
- expect(data.some((u) => u.name === "Flexy")).toBe(true);
160
- expect(data.some((u) => u.name === "Margin")).toBe(true);
161
- });
162
- it("filters by category", () => {
163
- const result = handleListCssUtilities(db, { category: "layout" });
164
- const data = JSON.parse(result.content[0].text);
165
- expect(data.length).toBe(2);
166
- expect(data.every((u) => u.category === "layout")).toBe(true);
167
- });
168
- });
169
- describe("get_install_info", () => {
170
- it("returns Vue install info for button", () => {
171
- const result = handleGetInstallInfo(db, { component: "button" });
172
- const data = JSON.parse(result.content[0].text);
173
- expect(data.component).toBe("MButton");
174
- expect(data.framework).toBe("vue");
175
- expect(data.package).toBe("@mozaic-ds/vue-3");
176
- expect(data.installCommand).toBe("npm install @mozaic-ds/vue-3");
177
- expect(data.imports.component).toContain("MButton");
178
- expect(data.imports.styles).toContain("@mozaic-ds/styles");
179
- });
180
- it("returns React install info", () => {
181
- const result = handleGetInstallInfo(db, { component: "button", framework: "react" });
182
- const data = JSON.parse(result.content[0].text);
183
- expect(data.framework).toBe("react");
184
- expect(data.package).toBe("@mozaic-ds/react");
185
- expect(data.peerDependencies).toContain("react@^17 || ^18");
186
- });
187
- it("supports yarn package manager", () => {
188
- const result = handleGetInstallInfo(db, {
189
- component: "button",
190
- packageManager: "yarn",
191
- });
192
- const data = JSON.parse(result.content[0].text);
193
- expect(data.installCommand).toBe("yarn add @mozaic-ds/vue-3");
194
- expect(data.relatedPackages.styles.installCommand).toContain("yarn add");
195
- });
196
- it("supports pnpm package manager", () => {
197
- const result = handleGetInstallInfo(db, {
198
- component: "button",
199
- packageManager: "pnpm",
200
- });
201
- const data = JSON.parse(result.content[0].text);
202
- expect(data.installCommand).toBe("pnpm add @mozaic-ds/vue-3");
203
- });
204
- it("includes quick start code", () => {
205
- const result = handleGetInstallInfo(db, { component: "modal" });
206
- const data = JSON.parse(result.content[0].text);
207
- expect(data.quickStart).toBeDefined();
208
- expect(data.quickStart.setup).toContain("@mozaic-ds/styles");
209
- expect(data.quickStart.usage).toContain("MModal");
210
- });
211
- it("returns error for unknown component", () => {
212
- const result = handleGetInstallInfo(db, { component: "nonexistent" });
213
- const data = JSON.parse(result.content[0].text);
214
- expect(data.error).toContain("not found");
215
- });
216
- it("returns error for empty component name", () => {
217
- const result = handleGetInstallInfo(db, { component: "" });
218
- const data = JSON.parse(result.content[0].text);
219
- expect(data.error).toContain("Please provide a component name");
220
- });
221
- });
222
- describe("Web Components Tools", () => {
223
- describe("generate_webcomponent", () => {
224
- it("generates basic web component code", () => {
225
- const result = handleGenerateWebComponent(db, { component: "button" });
226
- expect(result.content[0].text).toContain("import '@adeo/mozaic-web-components/button.js'");
227
- expect(result.content[0].text).toContain("<");
228
- expect(result.content[0].text).toContain(">");
229
- });
230
- it("generates component with attributes", () => {
231
- const result = handleGenerateWebComponent(db, {
232
- component: "button",
233
- attributes: { theme: "primary", size: "m" },
234
- });
235
- expect(result.content[0].text).toContain('theme="primary"');
236
- expect(result.content[0].text).toContain('size="m"');
237
- });
238
- it("generates component with children", () => {
239
- const result = handleGenerateWebComponent(db, {
240
- component: "button",
241
- children: "Click me",
242
- });
243
- expect(result.content[0].text).toContain("Click me");
244
- expect(result.content[0].text).toMatch(/<[^>]+>[\s\S]*Click me[\s\S]*<\/[^>]+>/);
245
- });
246
- it("handles kebab-case conversion", () => {
247
- const result = handleGenerateWebComponent(db, { component: "button" });
248
- // Should generate mozaic-button or similar tag name
249
- expect(result.content[0].text).toContain("<");
250
- });
251
- });
252
- describe("get_webcomponent_info", () => {
253
- it("returns web component information", () => {
254
- const result = handleGetWebComponentInfo(db, { component: "button" });
255
- // Check if it's a formatted markdown response or contains component info
256
- expect(result.content[0].text).toBeDefined();
257
- expect(result.content[0].text.length).toBeGreaterThan(0);
258
- });
259
- it("handles component not found", () => {
260
- const result = handleGetWebComponentInfo(db, { component: "nonexistent-wc" });
261
- expect(result.content[0].text).toContain("not found");
262
- });
263
- it("shows attributes section", () => {
264
- const result = handleGetWebComponentInfo(db, { component: "button" });
265
- // Should contain structured information
266
- expect(result.content[0].text).toBeDefined();
267
- });
268
- });
269
- describe("list_webcomponents", () => {
270
- it("lists all web components", () => {
271
- const result = handleListWebComponents(db, { category: "all" });
272
- expect(result.content[0].text).toBeDefined();
273
- expect(result.content[0].text.length).toBeGreaterThan(0);
274
- });
275
- it("filters web components by category", () => {
276
- const result = handleListWebComponents(db, { category: "form" });
277
- expect(result.content[0].text).toBeDefined();
278
- });
279
- it("returns proper structure", () => {
280
- const result = handleListWebComponents(db, { category: "all" });
281
- // Check that it contains either formatted text or JSON
282
- expect(result.content[0].text).toBeDefined();
283
- });
284
- });
285
- describe("get_component_info with webcomponents framework", () => {
286
- it("supports webcomponents as framework option", () => {
287
- const result = handleGetComponentInfo(db, {
288
- component: "button",
289
- framework: "webcomponents",
290
- });
291
- expect(result.content[0].text).toBeDefined();
292
- });
293
- it("generates web component example for webcomponents framework", () => {
294
- const result = handleGetComponentInfo(db, {
295
- component: "button",
296
- framework: "webcomponents",
297
- });
298
- const data = JSON.parse(result.content[0].text);
299
- // Should have examples property
300
- expect(data.examples).toBeDefined();
301
- });
302
- });
303
- });
304
- });
305
- //# sourceMappingURL=tools.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/tools.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=docs-parser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-parser.test.d.ts","sourceRoot":"","sources":["../../../src/parsers/__tests__/docs-parser.test.ts"],"names":[],"mappings":""}
@@ -1,251 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- // Test the internal functions by importing the module and testing via parseDocumentation
3
- // Since internal functions aren't exported, we test behavior through the public API
4
- // For unit testing, we'll create mock implementations that test the parsing logic
5
- describe("Docs Parser", () => {
6
- describe("frontmatter extraction", () => {
7
- it("extracts frontmatter with title", () => {
8
- const content = `---
9
- title: My Page
10
- category: guides
11
- ---
12
-
13
- # Content here`;
14
- const result = extractFrontmatter(content);
15
- expect(result.frontmatter.title).toBe("My Page");
16
- expect(result.frontmatter.category).toBe("guides");
17
- expect(result.body).toContain("# Content here");
18
- });
19
- it("handles content without frontmatter", () => {
20
- const content = `# Just a heading
21
-
22
- Some content without frontmatter`;
23
- const result = extractFrontmatter(content);
24
- expect(result.frontmatter).toEqual({});
25
- expect(result.body).toBe(content);
26
- });
27
- it("handles quoted values in frontmatter", () => {
28
- const content = `---
29
- title: "Quoted Title"
30
- description: 'Single quoted'
31
- ---
32
-
33
- Body`;
34
- const result = extractFrontmatter(content);
35
- expect(result.frontmatter.title).toBe("Quoted Title");
36
- expect(result.frontmatter.description).toBe("Single quoted");
37
- });
38
- });
39
- describe("title extraction", () => {
40
- it("extracts h1 from markdown", () => {
41
- const content = `# My Title
42
-
43
- Some content`;
44
- expect(extractTitle(content)).toBe("My Title");
45
- });
46
- it("extracts h1 from HTML", () => {
47
- const content = `<h1>HTML Title</h1>
48
-
49
- Some content`;
50
- expect(extractTitle(content)).toBe("HTML Title");
51
- });
52
- it("returns Untitled when no heading found", () => {
53
- const content = `Some content without heading`;
54
- expect(extractTitle(content)).toBe("Untitled");
55
- });
56
- });
57
- describe("keyword extraction", () => {
58
- it("extracts component names (MButton, MCard)", () => {
59
- const content = `Use MButton for actions and MCard for containers`;
60
- const keywords = extractKeywords(content, "Components");
61
- expect(keywords).toContain("mbutton");
62
- expect(keywords).toContain("mcard");
63
- });
64
- it("extracts CSS class names (mc-*)", () => {
65
- const content = `Apply mc-button and mc-card-primary classes`;
66
- const keywords = extractKeywords(content, "Styling");
67
- expect(keywords).toContain("mc-button");
68
- expect(keywords).toContain("mc-card-primary");
69
- });
70
- it("extracts code keywords", () => {
71
- const content = `Define props and emit events with slots`;
72
- const keywords = extractKeywords(content, "API");
73
- expect(keywords).toContain("props");
74
- expect(keywords).toContain("emit");
75
- expect(keywords).toContain("events");
76
- expect(keywords).toContain("slots");
77
- });
78
- it("adds title words as keywords", () => {
79
- const keywords = extractKeywords("content", "Button Component Guide");
80
- expect(keywords).toContain("button");
81
- expect(keywords).toContain("component");
82
- expect(keywords).toContain("guide");
83
- });
84
- it("skips short words from title", () => {
85
- const keywords = extractKeywords("content", "A is on");
86
- // Words with 2 or fewer characters should be skipped
87
- expect(keywords).not.toContain("a");
88
- expect(keywords).not.toContain("is");
89
- expect(keywords).not.toContain("on");
90
- });
91
- });
92
- describe("content cleaning", () => {
93
- it("removes import statements", () => {
94
- const content = `import { Button } from '@mozaic/vue'
95
- import React from 'react'
96
-
97
- # Content`;
98
- const cleaned = cleanContent(content);
99
- expect(cleaned).not.toContain("import");
100
- expect(cleaned).toContain("# Content");
101
- });
102
- it("removes JSX components but keeps text content", () => {
103
- const content = `<MyComponent prop="value">Inner text</MyComponent>`;
104
- const cleaned = cleanContent(content);
105
- expect(cleaned).toContain("Inner text");
106
- expect(cleaned).not.toContain("<MyComponent");
107
- });
108
- it("removes empty code blocks", () => {
109
- const content = "Before\n```\n```\nAfter";
110
- const cleaned = cleanContent(content);
111
- expect(cleaned).not.toContain("```");
112
- });
113
- it("normalizes excessive whitespace", () => {
114
- const content = "Line 1\n\n\n\n\nLine 2";
115
- const cleaned = cleanContent(content);
116
- expect(cleaned).toBe("Line 1\n\nLine 2");
117
- });
118
- });
119
- describe("category inference", () => {
120
- it("infers components category", () => {
121
- expect(inferCategory("/docs/components/button/index.mdx")).toBe("components");
122
- });
123
- it("infers foundations category from foundation path", () => {
124
- expect(inferCategory("/docs/foundation/colors.mdx")).toBe("foundations");
125
- });
126
- it("infers foundations category from tokens path", () => {
127
- expect(inferCategory("/docs/tokens/spacing.mdx")).toBe("foundations");
128
- });
129
- it("infers patterns category", () => {
130
- expect(inferCategory("/docs/patterns/forms.mdx")).toBe("patterns");
131
- });
132
- it("infers guides category from getting-started", () => {
133
- expect(inferCategory("/docs/getting-started/install.mdx")).toBe("guides");
134
- });
135
- it("infers guides category from guide path", () => {
136
- expect(inferCategory("/docs/guide/usage.mdx")).toBe("guides");
137
- });
138
- it("returns other for unknown paths", () => {
139
- expect(inferCategory("/docs/random/page.mdx")).toBe("other");
140
- });
141
- });
142
- describe("URL path generation", () => {
143
- it("generates URL path from file path", () => {
144
- const result = generateUrlPath("/docs/components/button/index.mdx", "/docs");
145
- expect(result).toBe("/components/button");
146
- });
147
- it("removes .mdx extension", () => {
148
- const result = generateUrlPath("/docs/guide.mdx", "/docs");
149
- expect(result).toBe("/guide");
150
- });
151
- it("removes .md extension", () => {
152
- const result = generateUrlPath("/docs/readme.md", "/docs");
153
- expect(result).toBe("/readme");
154
- });
155
- it("converts to lowercase", () => {
156
- const result = generateUrlPath("/docs/Components/Button.mdx", "/docs");
157
- expect(result).toBe("/components/button");
158
- });
159
- });
160
- });
161
- // Helper functions to test - reimplemented for unit testing
162
- function extractFrontmatter(content) {
163
- const frontmatterRegex = /^---\n([\s\S]*?)\n---\n([\s\S]*)$/;
164
- const match = content.match(frontmatterRegex);
165
- if (match) {
166
- const frontmatterStr = match[1];
167
- const body = match[2];
168
- const frontmatter = {};
169
- const lines = frontmatterStr.split("\n");
170
- for (const line of lines) {
171
- const colonIndex = line.indexOf(":");
172
- if (colonIndex !== -1) {
173
- const key = line.substring(0, colonIndex).trim();
174
- const value = line
175
- .substring(colonIndex + 1)
176
- .trim()
177
- .replace(/^['"]|['"]$/g, "");
178
- frontmatter[key] = value;
179
- }
180
- }
181
- return { frontmatter, body };
182
- }
183
- return { frontmatter: {}, body: content };
184
- }
185
- function extractTitle(content) {
186
- const h1Match = content.match(/^#\s+(.+)$/m);
187
- if (h1Match) {
188
- return h1Match[1];
189
- }
190
- const mdxMatch = content.match(/<h1[^>]*>([^<]+)<\/h1>/i);
191
- if (mdxMatch) {
192
- return mdxMatch[1];
193
- }
194
- return "Untitled";
195
- }
196
- function extractKeywords(content, title) {
197
- const keywords = new Set();
198
- title.split(/\s+/).forEach((word) => {
199
- if (word.length > 2) {
200
- keywords.add(word.toLowerCase());
201
- }
202
- });
203
- const componentRegex = /\bM[A-Z][a-zA-Z]+/g;
204
- const componentMatches = content.match(componentRegex);
205
- if (componentMatches) {
206
- componentMatches.forEach((match) => keywords.add(match.toLowerCase()));
207
- }
208
- const cssClassRegex = /\bmc-[a-z0-9-]+/g;
209
- const cssMatches = content.match(cssClassRegex);
210
- if (cssMatches) {
211
- cssMatches.forEach((match) => keywords.add(match));
212
- }
213
- const codeKeywords = ["props", "slots", "events", "emit", "component", "style"];
214
- codeKeywords.forEach((keyword) => {
215
- if (content.toLowerCase().includes(keyword)) {
216
- keywords.add(keyword);
217
- }
218
- });
219
- return Array.from(keywords);
220
- }
221
- function cleanContent(content) {
222
- let cleaned = content.replace(/^import\s+.*$/gm, "");
223
- cleaned = cleaned.replace(/<[A-Z][a-zA-Z]*[^>]*>([\s\S]*?)<\/[A-Z][a-zA-Z]*>/g, "$1");
224
- cleaned = cleaned.replace(/```\s*```/g, "");
225
- cleaned = cleaned.replace(/\n{3,}/g, "\n\n");
226
- return cleaned.trim();
227
- }
228
- function inferCategory(filePath) {
229
- const pathLower = filePath.toLowerCase();
230
- if (pathLower.includes("component")) {
231
- return "components";
232
- }
233
- if (pathLower.includes("foundation") || pathLower.includes("token")) {
234
- return "foundations";
235
- }
236
- if (pathLower.includes("pattern")) {
237
- return "patterns";
238
- }
239
- if (pathLower.includes("getting-started") || pathLower.includes("guide")) {
240
- return "guides";
241
- }
242
- return "other";
243
- }
244
- function generateUrlPath(filePath, basePath) {
245
- let urlPath = filePath.replace(basePath, "");
246
- urlPath = urlPath.replace(/\.(mdx?|md)$/, "");
247
- urlPath = urlPath.replace(/\\/g, "/").toLowerCase();
248
- urlPath = urlPath.replace(/\/index$/, "");
249
- return urlPath;
250
- }
251
- //# sourceMappingURL=docs-parser.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs-parser.test.js","sourceRoot":"","sources":["../../../src/parsers/__tests__/docs-parser.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=icons-parser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons-parser.test.d.ts","sourceRoot":"","sources":["../../../src/parsers/__tests__/icons-parser.test.ts"],"names":[],"mappings":""}