mozaic-mcp-server 2.4.0 → 2.5.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.
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,207 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- // Test the Vue prop extraction patterns directly
3
- describe("Vue Parser - extractProps", () => {
4
- // Helper to extract props using the same logic as vue-parser.ts
5
- function extractProps(content) {
6
- const props = [];
7
- // Vue 3 Composition API: defineProps<{...}>() with TypeScript generics
8
- const definePropsMatch = content.match(/defineProps<\{([\s\S]*?)\}>\s*\(\)/);
9
- if (definePropsMatch) {
10
- const propsContent = definePropsMatch[1];
11
- // Extract defaults from withDefaults if present
12
- const defaultsMatch = content.match(/withDefaults\s*\(\s*defineProps<[\s\S]*?>\s*\(\)\s*,\s*\{([\s\S]*?)\}\s*\)/);
13
- const defaultsContent = defaultsMatch ? defaultsMatch[1] : "";
14
- // Parse each prop with its JSDoc comment
15
- const propRegex = /(?:\/\*\*[\s\S]*?\*\/\s*)?(\w+)(\?)?:\s*([^;]+);/g;
16
- let match;
17
- while ((match = propRegex.exec(propsContent)) !== null) {
18
- const propName = match[1];
19
- const isOptional = !!match[2];
20
- const propType = match[3].trim();
21
- // Extract description from JSDoc comment before this prop
22
- const beforeProp = propsContent.substring(0, match.index);
23
- // Match JSDoc: /** ... */ allowing for multi-line content with * prefixes
24
- const jsdocMatch = beforeProp.match(/\/\*\*([\s\S]*?)\*\/\s*$/);
25
- let description;
26
- if (jsdocMatch) {
27
- // Remove leading whitespace, asterisks, and collapse to single line
28
- description = jsdocMatch[1]
29
- .split("\n")
30
- .map((line) => line.replace(/^\s*\*?\s*/, "").trim())
31
- .filter((line) => line.length > 0)
32
- .join(" ")
33
- .trim();
34
- }
35
- // Extract default value
36
- const defaultMatch = defaultsContent.match(new RegExp(`${propName}\\s*:\\s*['"\`]?([^'"\`,}]+)['"\`]?`));
37
- const defaultValue = defaultMatch ? defaultMatch[1].trim() : undefined;
38
- // Extract options from union types
39
- let options;
40
- if (propType.includes("'") && propType.includes("|")) {
41
- options = propType
42
- .split("|")
43
- .map((s) => s.trim().replace(/['"]/g, ""))
44
- .filter((s) => s.length > 0);
45
- }
46
- props.push({
47
- name: propName,
48
- type: propType,
49
- required: !isOptional,
50
- defaultValue,
51
- options,
52
- description,
53
- });
54
- }
55
- }
56
- return props;
57
- }
58
- it("should extract props from defineProps with TypeScript generics", () => {
59
- const content = `
60
- const props = defineProps<{
61
- size?: 's' | 'm' | 'l';
62
- disabled?: boolean;
63
- }>()
64
- `;
65
- const props = extractProps(content);
66
- expect(props).toHaveLength(2);
67
- expect(props[0].name).toBe("size");
68
- expect(props[0].required).toBe(false);
69
- expect(props[0].options).toEqual(["s", "m", "l"]);
70
- expect(props[1].name).toBe("disabled");
71
- expect(props[1].type).toBe("boolean");
72
- });
73
- it("should extract props with withDefaults", () => {
74
- const content = `
75
- const props = withDefaults(
76
- defineProps<{
77
- appearance?: 'standard' | 'accent' | 'danger';
78
- size?: 's' | 'm' | 'l';
79
- }>(),
80
- {
81
- appearance: 'standard',
82
- size: 'm',
83
- }
84
- )
85
- `;
86
- const props = extractProps(content);
87
- expect(props).toHaveLength(2);
88
- expect(props[0].name).toBe("appearance");
89
- expect(props[0].defaultValue).toBe("standard");
90
- expect(props[0].options).toEqual(["standard", "accent", "danger"]);
91
- expect(props[1].name).toBe("size");
92
- expect(props[1].defaultValue).toBe("m");
93
- });
94
- it("should handle boolean and string types", () => {
95
- const content = `
96
- const props = defineProps<{
97
- isLoading?: boolean;
98
- label: string;
99
- count?: number;
100
- }>()
101
- `;
102
- const props = extractProps(content);
103
- expect(props).toHaveLength(3);
104
- expect(props[0].name).toBe("isLoading");
105
- expect(props[0].type).toBe("boolean");
106
- expect(props[0].required).toBe(false);
107
- expect(props[1].name).toBe("label");
108
- expect(props[1].type).toBe("string");
109
- expect(props[1].required).toBe(true);
110
- expect(props[2].name).toBe("count");
111
- expect(props[2].type).toBe("number");
112
- });
113
- });
114
- describe("Vue Parser - extractSlots", () => {
115
- function extractSlots(content) {
116
- const slots = [];
117
- const seenSlots = new Set();
118
- const slotRegex = /<slot\s*(?:name=["']([^"']+)["'])?[^>]*>/g;
119
- let match;
120
- while ((match = slotRegex.exec(content)) !== null) {
121
- const slotName = match[1] || "default";
122
- if (!seenSlots.has(slotName)) {
123
- seenSlots.add(slotName);
124
- slots.push({ name: slotName });
125
- }
126
- }
127
- return slots;
128
- }
129
- it("should extract default slot", () => {
130
- const content = `<template><slot /></template>`;
131
- const slots = extractSlots(content);
132
- expect(slots).toHaveLength(1);
133
- expect(slots[0].name).toBe("default");
134
- });
135
- it("should extract named slots", () => {
136
- const content = `
137
- <template>
138
- <slot name="header" />
139
- <slot />
140
- <slot name="footer" />
141
- </template>
142
- `;
143
- const slots = extractSlots(content);
144
- expect(slots).toHaveLength(3);
145
- expect(slots.map((s) => s.name)).toContain("header");
146
- expect(slots.map((s) => s.name)).toContain("default");
147
- expect(slots.map((s) => s.name)).toContain("footer");
148
- });
149
- it("should not duplicate slots", () => {
150
- const content = `
151
- <template>
152
- <slot name="icon" />
153
- <slot name="icon" />
154
- </template>
155
- `;
156
- const slots = extractSlots(content);
157
- expect(slots).toHaveLength(1);
158
- expect(slots[0].name).toBe("icon");
159
- });
160
- });
161
- describe("Vue Parser - extractEvents", () => {
162
- function extractEvents(content) {
163
- const events = [];
164
- const seenEvents = new Set();
165
- // Match emit calls: emit('eventName') or $emit('eventName')
166
- const emitPatterns = [/emit\s*\(\s*['"]([^'"]+)['"]/g, /\$emit\s*\(\s*['"]([^'"]+)['"]/g];
167
- for (const pattern of emitPatterns) {
168
- let match;
169
- while ((match = pattern.exec(content)) !== null) {
170
- const eventName = match[1];
171
- if (!seenEvents.has(eventName)) {
172
- seenEvents.add(eventName);
173
- events.push({ name: eventName });
174
- }
175
- }
176
- }
177
- return events;
178
- }
179
- it("should extract emit events", () => {
180
- const content = `
181
- const emit = defineEmits(['update', 'change'])
182
- emit('update', value)
183
- emit('change', newValue)
184
- `;
185
- const events = extractEvents(content);
186
- expect(events).toHaveLength(2);
187
- expect(events.map((e) => e.name)).toContain("update");
188
- expect(events.map((e) => e.name)).toContain("change");
189
- });
190
- it("should extract $emit events from Options API", () => {
191
- const content = `
192
- methods: {
193
- handleClick() {
194
- this.$emit('click', this.value)
195
- },
196
- handleChange() {
197
- this.$emit('input', newValue)
198
- }
199
- }
200
- `;
201
- const events = extractEvents(content);
202
- expect(events).toHaveLength(2);
203
- expect(events.map((e) => e.name)).toContain("click");
204
- expect(events.map((e) => e.name)).toContain("input");
205
- });
206
- });
207
- //# sourceMappingURL=vue-parser.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vue-parser.test.js","sourceRoot":"","sources":["../../../src/parsers/__tests__/vue-parser.test.ts"],"names":[],"mappings":"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"}