@terreno/mcp 0.31.0 → 56.0.0-beta.2
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/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +8 -9
- package/dist/bootstrap.js.map +1 -1
- package/dist/docs/templates/bootstrap/frontend/app/_layout.template.tsx +1 -1
- package/dist/docs/upgrades/56.0.0-beta.2.md +59 -0
- package/dist/docs/versioned/next/README.md +2 -0
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +21 -0
- package/dist/docs/versioned/next/how-to/README.md +2 -0
- package/dist/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +445 -0
- package/dist/docs/versioned/next/implementationPlans/PLAN_INDEX.md +28 -50
- package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +3 -2
- package/dist/docs/versioned/next/implementationPlans/comms-abstraction.md +98 -15
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +63 -13
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +65 -12
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-verify.md +9 -3
- package/dist/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +180 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci-research.md +126 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +269 -0
- package/dist/docs/versioned/next/implementationPlans/rtk-to-syncdb-migration-docs.md +52 -47
- package/dist/docs/versioned/next/implementationPlans/syncdb-api-inventory.md +303 -0
- package/dist/docs/versioned/next/implementationPlans/syncdb-codegen.md +252 -0
- package/dist/docs/versioned/next/implementationPlans/syncdb-local-first.md +468 -420
- package/dist/docs/versioned/next/implementationPlans/syncdb-phase-c-design.md +425 -0
- package/dist/docs/versioned/next/implementationPlans/terreno-syncdb-2.md +800 -0
- package/dist/docs/versioned/next/reference/README.md +2 -0
- package/dist/docs/versioned/next/reference/comms.md +132 -0
- package/dist/docs/versioned/next/reference/environment-variables.md +9 -0
- package/dist/docs/versioned/next/reference/syncdb.md +456 -0
- package/dist/docs/versioned/next/superpowers/plans/2026-07-28-admin-mobile-navigation.md +97 -0
- package/dist/docs/versioned/next/superpowers/specs/2026-07-28-admin-mobile-navigation-design.md +36 -0
- package/dist/docs/versioned/next/tasks/comms-abstraction.md +29 -16
- package/dist/docs/versioned/next/tasks/comms-adapter-sendgrid.md +17 -7
- package/dist/docs/versioned/next/tasks/comms-adapter-twilio-sms.md +17 -7
- package/dist/docs/versioned/next/tasks/comms-adapter-twilio-verify.md +3 -3
- package/dist/docs/versioned/next/tasks/comms-admin-dashboard.md +52 -0
- package/dist/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +215 -0
- package/dist/docs/versioned/next/tasks/rtk-to-syncdb-migration-docs.md +10 -10
- package/dist/docs/versioned/next/tasks/syncdb-codegen.md +65 -0
- package/dist/docs/versioned/next/tasks/syncdb-local-first.md +434 -117
- package/package.json +3 -3
- package/src/docs/templates/bootstrap/frontend/app/_layout.template.tsx +1 -1
- package/src/docs/upgrades/56.0.0-beta.2.md +59 -0
- package/src/docs/versioned/next/README.md +2 -0
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +21 -0
- package/src/docs/versioned/next/how-to/README.md +2 -0
- package/src/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +445 -0
- package/src/docs/versioned/next/implementationPlans/PLAN_INDEX.md +28 -50
- package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +3 -2
- package/src/docs/versioned/next/implementationPlans/comms-abstraction.md +98 -15
- package/src/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +63 -13
- package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +65 -12
- package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-verify.md +9 -3
- package/src/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +180 -0
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci-research.md +126 -0
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +269 -0
- package/src/docs/versioned/next/implementationPlans/rtk-to-syncdb-migration-docs.md +52 -47
- package/src/docs/versioned/next/implementationPlans/syncdb-api-inventory.md +303 -0
- package/src/docs/versioned/next/implementationPlans/syncdb-codegen.md +252 -0
- package/src/docs/versioned/next/implementationPlans/syncdb-local-first.md +468 -420
- package/src/docs/versioned/next/implementationPlans/syncdb-phase-c-design.md +425 -0
- package/src/docs/versioned/next/implementationPlans/terreno-syncdb-2.md +800 -0
- package/src/docs/versioned/next/reference/README.md +2 -0
- package/src/docs/versioned/next/reference/comms.md +132 -0
- package/src/docs/versioned/next/reference/environment-variables.md +9 -0
- package/src/docs/versioned/next/reference/syncdb.md +456 -0
- package/src/docs/versioned/next/superpowers/plans/2026-07-28-admin-mobile-navigation.md +97 -0
- package/src/docs/versioned/next/superpowers/specs/2026-07-28-admin-mobile-navigation-design.md +36 -0
- package/src/docs/versioned/next/tasks/comms-abstraction.md +29 -16
- package/src/docs/versioned/next/tasks/comms-adapter-sendgrid.md +17 -7
- package/src/docs/versioned/next/tasks/comms-adapter-twilio-sms.md +17 -7
- package/src/docs/versioned/next/tasks/comms-adapter-twilio-verify.md +3 -3
- package/src/docs/versioned/next/tasks/comms-admin-dashboard.md +52 -0
- package/src/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +215 -0
- package/src/docs/versioned/next/tasks/rtk-to-syncdb-migration-docs.md +10 -10
- package/src/docs/versioned/next/tasks/syncdb-codegen.md +65 -0
- package/src/docs/versioned/next/tasks/syncdb-local-first.md +434 -117
- package/dist/__tests__/bootstrap.test.d.ts +0 -2
- package/dist/__tests__/bootstrap.test.d.ts.map +0 -1
- package/dist/__tests__/bootstrap.test.js +0 -299
- package/dist/__tests__/bootstrap.test.js.map +0 -1
- package/dist/__tests__/databaseQuery.test.d.ts +0 -2
- package/dist/__tests__/databaseQuery.test.d.ts.map +0 -1
- package/dist/__tests__/databaseQuery.test.js +0 -83
- package/dist/__tests__/databaseQuery.test.js.map +0 -1
- package/dist/__tests__/docsRoot.test.d.ts +0 -2
- package/dist/__tests__/docsRoot.test.d.ts.map +0 -1
- package/dist/__tests__/docsRoot.test.js +0 -59
- package/dist/__tests__/docsRoot.test.js.map +0 -1
- package/dist/__tests__/inferPackages.test.d.ts +0 -2
- package/dist/__tests__/inferPackages.test.d.ts.map +0 -1
- package/dist/__tests__/inferPackages.test.js +0 -35
- package/dist/__tests__/inferPackages.test.js.map +0 -1
- package/dist/__tests__/preload.d.ts +0 -2
- package/dist/__tests__/preload.d.ts.map +0 -1
- package/dist/__tests__/preload.js +0 -12
- package/dist/__tests__/preload.js.map +0 -1
- package/dist/__tests__/prompts.test.d.ts +0 -2
- package/dist/__tests__/prompts.test.d.ts.map +0 -1
- package/dist/__tests__/prompts.test.js +0 -295
- package/dist/__tests__/prompts.test.js.map +0 -1
- package/dist/__tests__/resources.test.d.ts +0 -2
- package/dist/__tests__/resources.test.d.ts.map +0 -1
- package/dist/__tests__/resources.test.js +0 -352
- package/dist/__tests__/resources.test.js.map +0 -1
- package/dist/__tests__/search.test.d.ts +0 -2
- package/dist/__tests__/search.test.d.ts.map +0 -1
- package/dist/__tests__/search.test.js +0 -163
- package/dist/__tests__/search.test.js.map +0 -1
- package/dist/__tests__/tools.test.d.ts +0 -2
- package/dist/__tests__/tools.test.d.ts.map +0 -1
- package/dist/__tests__/tools.test.js +0 -540
- package/dist/__tests__/tools.test.js.map +0 -1
- package/dist/__tests__/upgradeGuide.test.d.ts +0 -2
- package/dist/__tests__/upgradeGuide.test.d.ts.map +0 -1
- package/dist/__tests__/upgradeGuide.test.js +0 -22
- package/dist/__tests__/upgradeGuide.test.js.map +0 -1
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "bun:test";
|
|
2
|
-
import { componentToSlug, extractTypeString, formatComponentMarkdown, generateComponentListMarkdown, loadTypeDocJson, parseComponentsFromTypeDoc, resources, } from "../resources.js";
|
|
3
|
-
describe("resources", () => {
|
|
4
|
-
test("should have all required resources", () => {
|
|
5
|
-
const resourceUris = resources.map((r) => r.uri);
|
|
6
|
-
expect(resourceUris).toContain("terreno://docs/overview");
|
|
7
|
-
expect(resourceUris).toContain("terreno://docs/api");
|
|
8
|
-
expect(resourceUris).toContain("terreno://docs/ui");
|
|
9
|
-
expect(resourceUris).toContain("terreno://docs/rtk");
|
|
10
|
-
expect(resourceUris).toContain("terreno://docs/patterns");
|
|
11
|
-
});
|
|
12
|
-
test("should have valid resource structure", () => {
|
|
13
|
-
for (const resource of resources) {
|
|
14
|
-
expect(resource.uri).toBeDefined();
|
|
15
|
-
expect(resource.name).toBeDefined();
|
|
16
|
-
expect(resource.description).toBeDefined();
|
|
17
|
-
expect(resource.mimeType).toBe("text/markdown");
|
|
18
|
-
expect(resource.content).toBeDefined();
|
|
19
|
-
expect(resource.content.length).toBeGreaterThan(100);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
describe("overview resource", () => {
|
|
23
|
-
const overview = resources.find((r) => r.uri === "terreno://docs/overview");
|
|
24
|
-
test("should contain monorepo overview", () => {
|
|
25
|
-
expect(overview?.content).toContain("Terreno");
|
|
26
|
-
expect(overview?.content).toContain("@terreno/api");
|
|
27
|
-
expect(overview?.content).toContain("@terreno/ui");
|
|
28
|
-
expect(overview?.content).toContain("@terreno/rtk");
|
|
29
|
-
});
|
|
30
|
-
test("should contain development commands", () => {
|
|
31
|
-
expect(overview?.content).toContain("bun install");
|
|
32
|
-
expect(overview?.content).toContain("bun run compile");
|
|
33
|
-
});
|
|
34
|
-
test("should contain code style guidelines", () => {
|
|
35
|
-
expect(overview?.content).toContain("TypeScript");
|
|
36
|
-
expect(overview?.content).toContain("Luxon");
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
describe("api resource", () => {
|
|
40
|
-
const api = resources.find((r) => r.uri === "terreno://docs/api");
|
|
41
|
-
test("should contain modelRouter documentation", () => {
|
|
42
|
-
expect(api?.content).toContain("modelRouter");
|
|
43
|
-
expect(api?.content).toContain("CRUD");
|
|
44
|
-
});
|
|
45
|
-
test("should contain permissions documentation", () => {
|
|
46
|
-
expect(api?.content).toContain("Permissions");
|
|
47
|
-
expect(api?.content).toContain("IsAuthenticated");
|
|
48
|
-
expect(api?.content).toContain("IsOwner");
|
|
49
|
-
expect(api?.content).toContain("IsAdmin");
|
|
50
|
-
});
|
|
51
|
-
test("should contain APIError documentation", () => {
|
|
52
|
-
expect(api?.content).toContain("APIError");
|
|
53
|
-
expect(api?.content).toContain("status");
|
|
54
|
-
});
|
|
55
|
-
test("should contain lifecycle hooks", () => {
|
|
56
|
-
expect(api?.content).toContain("preCreate");
|
|
57
|
-
expect(api?.content).toContain("postCreate");
|
|
58
|
-
});
|
|
59
|
-
test("should contain transformer documentation", () => {
|
|
60
|
-
expect(api?.content).toContain("Transformer");
|
|
61
|
-
expect(api?.content).toContain("AdminOwnerTransformer");
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe("ui resource", () => {
|
|
65
|
-
const ui = resources.find((r) => r.uri === "terreno://docs/ui");
|
|
66
|
-
test("should contain component documentation", () => {
|
|
67
|
-
expect(ui?.content).toContain("Box");
|
|
68
|
-
expect(ui?.content).toContain("Button");
|
|
69
|
-
expect(ui?.content).toContain("Text");
|
|
70
|
-
});
|
|
71
|
-
test("should contain form field documentation", () => {
|
|
72
|
-
expect(ui?.content).toContain("TextField");
|
|
73
|
-
expect(ui?.content).toContain("EmailField");
|
|
74
|
-
expect(ui?.content).toContain("SelectField");
|
|
75
|
-
});
|
|
76
|
-
test("should contain theme documentation", () => {
|
|
77
|
-
expect(ui?.content).toContain("useTheme");
|
|
78
|
-
expect(ui?.content).toContain("TerrenoProvider");
|
|
79
|
-
});
|
|
80
|
-
test("should contain modal documentation", () => {
|
|
81
|
-
expect(ui?.content).toContain("Modal");
|
|
82
|
-
expect(ui?.content).toContain("ActionSheet");
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
describe("rtk resource", () => {
|
|
86
|
-
const rtk = resources.find((r) => r.uri === "terreno://docs/rtk");
|
|
87
|
-
test("should contain RTK Query setup", () => {
|
|
88
|
-
expect(rtk?.content).toContain("emptyApi");
|
|
89
|
-
expect(rtk?.content).toContain("RTK Query");
|
|
90
|
-
});
|
|
91
|
-
test("should contain auth documentation", () => {
|
|
92
|
-
expect(rtk?.content).toContain("authSlice");
|
|
93
|
-
expect(rtk?.content).toContain("useEmailLoginMutation");
|
|
94
|
-
});
|
|
95
|
-
test("should contain token documentation", () => {
|
|
96
|
-
expect(rtk?.content).toContain("token");
|
|
97
|
-
expect(rtk?.content).toContain("refresh");
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
describe("patterns resource", () => {
|
|
101
|
-
const patterns = resources.find((r) => r.uri === "terreno://docs/patterns");
|
|
102
|
-
test("should contain backend patterns", () => {
|
|
103
|
-
expect(patterns?.content).toContain("Model Definition");
|
|
104
|
-
expect(patterns?.content).toContain("Route Setup");
|
|
105
|
-
});
|
|
106
|
-
test("should contain frontend patterns", () => {
|
|
107
|
-
expect(patterns?.content).toContain("Screen");
|
|
108
|
-
expect(patterns?.content).toContain("Form");
|
|
109
|
-
});
|
|
110
|
-
test("should contain error handling patterns", () => {
|
|
111
|
-
expect(patterns?.content).toContain("Error Handling");
|
|
112
|
-
expect(patterns?.content).toContain("APIError");
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
describe("loadTypeDocJson", () => {
|
|
117
|
-
test("should return null or object without throwing", () => {
|
|
118
|
-
const result = loadTypeDocJson();
|
|
119
|
-
expect(result === null || typeof result === "object").toBe(true);
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
describe("extractTypeString", () => {
|
|
123
|
-
test("returns unknown for null/undefined", () => {
|
|
124
|
-
expect(extractTypeString(null)).toBe("unknown");
|
|
125
|
-
expect(extractTypeString(undefined)).toBe("unknown");
|
|
126
|
-
});
|
|
127
|
-
test("handles intrinsic types", () => {
|
|
128
|
-
expect(extractTypeString({ name: "string", type: "intrinsic" })).toBe("string");
|
|
129
|
-
expect(extractTypeString({ name: "number", type: "intrinsic" })).toBe("number");
|
|
130
|
-
});
|
|
131
|
-
test("handles literal types", () => {
|
|
132
|
-
expect(extractTypeString({ type: "literal", value: "primary" })).toBe('"primary"');
|
|
133
|
-
expect(extractTypeString({ type: "literal", value: 42 })).toBe("42");
|
|
134
|
-
});
|
|
135
|
-
test("handles union types", () => {
|
|
136
|
-
expect(extractTypeString({
|
|
137
|
-
type: "union",
|
|
138
|
-
types: [
|
|
139
|
-
{ type: "literal", value: "a" },
|
|
140
|
-
{ type: "literal", value: "b" },
|
|
141
|
-
],
|
|
142
|
-
})).toBe('"a" | "b"');
|
|
143
|
-
});
|
|
144
|
-
test("handles union type with empty types", () => {
|
|
145
|
-
expect(extractTypeString({ type: "union" })).toBe("unknown");
|
|
146
|
-
});
|
|
147
|
-
test("handles array types", () => {
|
|
148
|
-
expect(extractTypeString({
|
|
149
|
-
elementType: { name: "string", type: "intrinsic" },
|
|
150
|
-
type: "array",
|
|
151
|
-
})).toBe("string[]");
|
|
152
|
-
});
|
|
153
|
-
test("handles reference types without type arguments", () => {
|
|
154
|
-
expect(extractTypeString({ name: "ReactNode", type: "reference" })).toBe("ReactNode");
|
|
155
|
-
});
|
|
156
|
-
test("handles reference types with type arguments", () => {
|
|
157
|
-
expect(extractTypeString({
|
|
158
|
-
name: "Array",
|
|
159
|
-
type: "reference",
|
|
160
|
-
typeArguments: [{ name: "string", type: "intrinsic" }],
|
|
161
|
-
})).toBe("Array<string>");
|
|
162
|
-
});
|
|
163
|
-
test("handles reflection with signatures as function", () => {
|
|
164
|
-
expect(extractTypeString({
|
|
165
|
-
declaration: { signatures: [{}] },
|
|
166
|
-
type: "reflection",
|
|
167
|
-
})).toBe("function");
|
|
168
|
-
});
|
|
169
|
-
test("handles reflection without signatures as object", () => {
|
|
170
|
-
expect(extractTypeString({
|
|
171
|
-
declaration: {},
|
|
172
|
-
type: "reflection",
|
|
173
|
-
})).toBe("object");
|
|
174
|
-
});
|
|
175
|
-
test("falls back to name for unknown types", () => {
|
|
176
|
-
expect(extractTypeString({ name: "Custom", type: "weird" })).toBe("Custom");
|
|
177
|
-
});
|
|
178
|
-
test("falls back to unknown when no name", () => {
|
|
179
|
-
expect(extractTypeString({ type: "weird" })).toBe("unknown");
|
|
180
|
-
});
|
|
181
|
-
test("falls back to unknown for reference without name", () => {
|
|
182
|
-
expect(extractTypeString({ type: "reference" })).toBe("unknown");
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
describe("componentToSlug", () => {
|
|
186
|
-
test("lowercases and replaces spaces with dashes", () => {
|
|
187
|
-
expect(componentToSlug("Button")).toBe("button");
|
|
188
|
-
expect(componentToSlug("Text Field")).toBe("text-field");
|
|
189
|
-
expect(componentToSlug("Multi Word Name")).toBe("multi-word-name");
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
describe("parseComponentsFromTypeDoc", () => {
|
|
193
|
-
test("returns empty array when Common module is missing", () => {
|
|
194
|
-
expect(parseComponentsFromTypeDoc({
|
|
195
|
-
children: [{ children: [], id: 0, name: "Other" }],
|
|
196
|
-
})).toEqual([]);
|
|
197
|
-
});
|
|
198
|
-
test("returns empty array when typedoc has no children", () => {
|
|
199
|
-
expect(parseComponentsFromTypeDoc({})).toEqual([]);
|
|
200
|
-
});
|
|
201
|
-
test("returns empty array when Common has no children", () => {
|
|
202
|
-
expect(parseComponentsFromTypeDoc({ children: [{ id: 0, name: "Common" }] })).toEqual([]);
|
|
203
|
-
});
|
|
204
|
-
test("filters to only *Props interfaces and extracts props", () => {
|
|
205
|
-
const typeDoc = {
|
|
206
|
-
children: [
|
|
207
|
-
{
|
|
208
|
-
children: [
|
|
209
|
-
{
|
|
210
|
-
children: [
|
|
211
|
-
{
|
|
212
|
-
comment: {
|
|
213
|
-
blockTags: [
|
|
214
|
-
{
|
|
215
|
-
content: [{ text: '```ts\n"primary"\n```' }],
|
|
216
|
-
tag: "@default",
|
|
217
|
-
},
|
|
218
|
-
],
|
|
219
|
-
summary: [{ text: "Visual variant" }],
|
|
220
|
-
},
|
|
221
|
-
flags: { isOptional: true },
|
|
222
|
-
name: "variant",
|
|
223
|
-
type: {
|
|
224
|
-
type: "union",
|
|
225
|
-
types: [
|
|
226
|
-
{ type: "literal", value: "primary" },
|
|
227
|
-
{ type: "literal", value: "secondary" },
|
|
228
|
-
],
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
flags: {},
|
|
233
|
-
name: "text",
|
|
234
|
-
type: { name: "string", type: "intrinsic" },
|
|
235
|
-
},
|
|
236
|
-
],
|
|
237
|
-
kind: 256,
|
|
238
|
-
name: "ButtonProps",
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
kind: 256,
|
|
242
|
-
name: "NotAPropsInterface",
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
kind: 256,
|
|
246
|
-
name: "OtherProps",
|
|
247
|
-
},
|
|
248
|
-
],
|
|
249
|
-
name: "Common",
|
|
250
|
-
},
|
|
251
|
-
],
|
|
252
|
-
};
|
|
253
|
-
const components = parseComponentsFromTypeDoc(typeDoc);
|
|
254
|
-
expect(components.length).toBe(2);
|
|
255
|
-
const button = components.find((c) => c.name === "Button");
|
|
256
|
-
expect(button).toBeDefined();
|
|
257
|
-
expect(button?.interfaceName).toBe("ButtonProps");
|
|
258
|
-
expect(button?.props.length).toBe(2);
|
|
259
|
-
const variantProp = button?.props.find((p) => p.name === "variant");
|
|
260
|
-
expect(variantProp?.required).toBe(false);
|
|
261
|
-
expect(variantProp?.type).toBe('"primary" | "secondary"');
|
|
262
|
-
expect(variantProp?.description).toBe("Visual variant");
|
|
263
|
-
expect(variantProp?.defaultValue).toBe('"primary"');
|
|
264
|
-
const textProp = button?.props.find((p) => p.name === "text");
|
|
265
|
-
expect(textProp?.required).toBe(true);
|
|
266
|
-
expect(textProp?.type).toBe("string");
|
|
267
|
-
});
|
|
268
|
-
test("handles interface with no children", () => {
|
|
269
|
-
const typeDoc = {
|
|
270
|
-
children: [
|
|
271
|
-
{
|
|
272
|
-
children: [{ id: 1, kind: 256, name: "EmptyProps", variant: "declaration" }],
|
|
273
|
-
id: 0,
|
|
274
|
-
name: "Common",
|
|
275
|
-
},
|
|
276
|
-
],
|
|
277
|
-
};
|
|
278
|
-
const components = parseComponentsFromTypeDoc(typeDoc);
|
|
279
|
-
expect(components.length).toBe(1);
|
|
280
|
-
expect(components[0].props).toEqual([]);
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
describe("formatComponentMarkdown", () => {
|
|
284
|
-
test("formats a component with props as markdown", () => {
|
|
285
|
-
const md = formatComponentMarkdown({
|
|
286
|
-
interfaceName: "ButtonProps",
|
|
287
|
-
name: "Button",
|
|
288
|
-
props: [
|
|
289
|
-
{
|
|
290
|
-
defaultValue: '"primary"',
|
|
291
|
-
description: "Visual variant",
|
|
292
|
-
name: "variant",
|
|
293
|
-
required: false,
|
|
294
|
-
type: '"primary" | "secondary"',
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
description: "",
|
|
298
|
-
name: "text",
|
|
299
|
-
required: true,
|
|
300
|
-
type: "string",
|
|
301
|
-
},
|
|
302
|
-
],
|
|
303
|
-
});
|
|
304
|
-
expect(md).toContain("# Button");
|
|
305
|
-
expect(md).toContain("**Interface:** `ButtonProps`");
|
|
306
|
-
expect(md).toContain("## Props");
|
|
307
|
-
expect(md).toContain("`variant`");
|
|
308
|
-
expect(md).toContain("Visual variant");
|
|
309
|
-
expect(md).toContain('(default: `"primary"`)');
|
|
310
|
-
expect(md).toContain("`text`");
|
|
311
|
-
expect(md).toContain("| Yes |");
|
|
312
|
-
});
|
|
313
|
-
test("formats a component without props", () => {
|
|
314
|
-
const md = formatComponentMarkdown({
|
|
315
|
-
interfaceName: "SpacerProps",
|
|
316
|
-
name: "Spacer",
|
|
317
|
-
props: [],
|
|
318
|
-
});
|
|
319
|
-
expect(md).toContain("# Spacer");
|
|
320
|
-
expect(md).toContain("**Interface:** `SpacerProps`");
|
|
321
|
-
expect(md).not.toContain("## Props");
|
|
322
|
-
});
|
|
323
|
-
});
|
|
324
|
-
describe("generateComponentListMarkdown", () => {
|
|
325
|
-
test("generates markdown for a list of components", () => {
|
|
326
|
-
const md = generateComponentListMarkdown([
|
|
327
|
-
{
|
|
328
|
-
interfaceName: "ButtonProps",
|
|
329
|
-
name: "Button",
|
|
330
|
-
props: [
|
|
331
|
-
{ description: "", name: "text", required: true, type: "string" },
|
|
332
|
-
{ description: "", name: "onClick", required: false, type: "function" },
|
|
333
|
-
],
|
|
334
|
-
},
|
|
335
|
-
{
|
|
336
|
-
interfaceName: "AvatarProps",
|
|
337
|
-
name: "Avatar",
|
|
338
|
-
props: [],
|
|
339
|
-
},
|
|
340
|
-
]);
|
|
341
|
-
expect(md).toContain("# @terreno/ui Component Reference");
|
|
342
|
-
expect(md).toContain("**Total Components:** 2");
|
|
343
|
-
expect(md).toContain("| Avatar |");
|
|
344
|
-
expect(md).toContain("| Button |");
|
|
345
|
-
// Alphabetical: Avatar before Button
|
|
346
|
-
expect(md.indexOf("Avatar")).toBeLessThan(md.indexOf("Button"));
|
|
347
|
-
expect(md).toContain("**Required:** `text`");
|
|
348
|
-
expect(md).toContain("**Optional:** `onClick`");
|
|
349
|
-
expect(md).toContain("*No props*");
|
|
350
|
-
});
|
|
351
|
-
});
|
|
352
|
-
//# sourceMappingURL=resources.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resources.test.js","sourceRoot":"","sources":["../../src/__tests__/resources.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/search.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, test } from "bun:test";
|
|
2
|
-
import { mkdirSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { chunkMarkdown, standaloneDocumentChunk } from "../search/chunker.js";
|
|
5
|
-
import { getComponentDocsMarkdown, resetDocSearchIndexForTests, searchDocs, } from "../search/docIndex.js";
|
|
6
|
-
describe("chunkMarkdown", () => {
|
|
7
|
-
test("splits on headings and builds breadcrumbs", () => {
|
|
8
|
-
const md = `# Title\n\nIntro\n\n## Sub\n\nBody here`;
|
|
9
|
-
const chunks = chunkMarkdown("test.md", md, ["docs"]);
|
|
10
|
-
expect(chunks.length).toBeGreaterThanOrEqual(2);
|
|
11
|
-
const sub = chunks.find((c) => c.title === "Sub");
|
|
12
|
-
expect(sub).toBeDefined();
|
|
13
|
-
expect(sub?.breadcrumb).toContain("Title");
|
|
14
|
-
expect(sub?.text).toContain("Body here");
|
|
15
|
-
});
|
|
16
|
-
test("pops heading stack when encountering a same-level sibling heading", () => {
|
|
17
|
-
const md = ["# Section", "## A", "## B", "", "Under B"].join("\n");
|
|
18
|
-
const chunks = chunkMarkdown("sibling.md", md, ["docs"]);
|
|
19
|
-
const b = chunks.find((c) => c.title === "B");
|
|
20
|
-
expect(b).toBeDefined();
|
|
21
|
-
expect(b?.breadcrumb).toContain("Section");
|
|
22
|
-
expect(b?.text).toContain("Under B");
|
|
23
|
-
});
|
|
24
|
-
test("handles CRLF line endings", () => {
|
|
25
|
-
const md = "# One\r\n\r\nBody\r\n## Two\r\nMore";
|
|
26
|
-
const chunks = chunkMarkdown("crlf.md", md, ["docs"]);
|
|
27
|
-
expect(chunks.some((c) => c.title === "Two")).toBe(true);
|
|
28
|
-
});
|
|
29
|
-
test("returns a single intro chunk for body text without headings", () => {
|
|
30
|
-
const chunks = chunkMarkdown("plain.md", "Only paragraph text.", ["docs"]);
|
|
31
|
-
expect(chunks.length).toBe(1);
|
|
32
|
-
expect(chunks[0]?.title).toBe("(intro)");
|
|
33
|
-
});
|
|
34
|
-
test("returns no chunks for whitespace-only markdown", () => {
|
|
35
|
-
expect(chunkMarkdown("empty.md", "\n\n\n", ["docs"])).toEqual([]);
|
|
36
|
-
});
|
|
37
|
-
test("standaloneDocumentChunk matches fallback shape used by chunkMarkdown", () => {
|
|
38
|
-
const chunk = standaloneDocumentChunk("only.md", " hello ", ["docs"]);
|
|
39
|
-
expect(chunk.title).toBe("(document)");
|
|
40
|
-
expect(chunk.text).toBe("hello");
|
|
41
|
-
expect(chunk.breadcrumb).toBe("only.md");
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
describe("docIndex", () => {
|
|
45
|
-
const tmp = join(import.meta.dir, "tmp-doc-search");
|
|
46
|
-
beforeEach(() => {
|
|
47
|
-
resetDocSearchIndexForTests();
|
|
48
|
-
rmSync(tmp, { force: true, recursive: true });
|
|
49
|
-
mkdirSync(join(tmp, "resources"), { recursive: true });
|
|
50
|
-
process.env.TERRENO_MCP_DOCS_DIR = tmp;
|
|
51
|
-
});
|
|
52
|
-
afterEach(() => {
|
|
53
|
-
delete process.env.TERRENO_MCP_DOCS_DIR;
|
|
54
|
-
resetDocSearchIndexForTests();
|
|
55
|
-
rmSync(tmp, { force: true, recursive: true });
|
|
56
|
-
});
|
|
57
|
-
test("finds keyword in indexed markdown", () => {
|
|
58
|
-
writeFileSync(join(tmp, "resources", "api.md"), ["# Terreno API", "", "## modelRouter", "", "The modelRouter helper maps CRUD routes."].join("\n"));
|
|
59
|
-
const out = searchDocs({ queries: ["modelRouter"] });
|
|
60
|
-
expect(out).toContain("modelRouter");
|
|
61
|
-
expect(out).toContain("Terreno documentation search results");
|
|
62
|
-
});
|
|
63
|
-
test("package filter excludes non-matching chunks", () => {
|
|
64
|
-
writeFileSync(join(tmp, "resources", "api.md"), ["# API", "", "alpha unique token xyz123"].join("\n"));
|
|
65
|
-
writeFileSync(join(tmp, "resources", "ui.md"), ["# UI", "", "beta unique token abc789"].join("\n"));
|
|
66
|
-
const uiOnly = searchDocs({ packages: ["ui"], queries: ["abc789"] });
|
|
67
|
-
expect(uiOnly).toContain("abc789");
|
|
68
|
-
expect(uiOnly).not.toContain("xyz123");
|
|
69
|
-
const apiOnly = searchDocs({ packages: ["@terreno/api"], queries: ["xyz123"] });
|
|
70
|
-
expect(apiOnly).toContain("xyz123");
|
|
71
|
-
expect(apiOnly).not.toContain("abc789");
|
|
72
|
-
});
|
|
73
|
-
test("tokenLimit truncates oversized single result", () => {
|
|
74
|
-
writeFileSync(join(tmp, "resources", "patterns.md"), ["# Patterns", "", "## Big section", "", `Section keyword filler ${"x".repeat(800)}`].join("\n\n"));
|
|
75
|
-
const small = searchDocs({ queries: ["Section"], tokenLimit: 5 });
|
|
76
|
-
expect(small).toContain("Truncated to approximate token budget");
|
|
77
|
-
});
|
|
78
|
-
test("invalid or non-positive tokenLimit matches default budget behavior", () => {
|
|
79
|
-
writeFileSync(join(tmp, "resources", "api.md"), ["# API", "", "alpha unique token xyz123"].join("\n"));
|
|
80
|
-
const baseline = searchDocs({ queries: ["alpha"] });
|
|
81
|
-
expect(searchDocs({ queries: ["alpha"], tokenLimit: -1 })).toBe(baseline);
|
|
82
|
-
expect(searchDocs({ queries: ["alpha"], tokenLimit: Number.NaN })).toBe(baseline);
|
|
83
|
-
expect(searchDocs({ queries: ["alpha"], tokenLimit: 0 })).toBe(baseline);
|
|
84
|
-
});
|
|
85
|
-
test("does not index markdown reached only via symlink under versioned/", () => {
|
|
86
|
-
const outsideDir = join(tmp, "outside-leak");
|
|
87
|
-
mkdirSync(outsideDir, { recursive: true });
|
|
88
|
-
const secretToken = "symlinkLeakTokenOutsideTree998877";
|
|
89
|
-
writeFileSync(join(outsideDir, "secret.md"), ["# Secret", "", secretToken].join("\n"));
|
|
90
|
-
const versionedNested = join(tmp, "versioned", "0.1", "nested");
|
|
91
|
-
mkdirSync(versionedNested, { recursive: true });
|
|
92
|
-
try {
|
|
93
|
-
symlinkSync(join(outsideDir, "secret.md"), join(versionedNested, "alias.md"));
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const out = searchDocs({ queries: [secretToken] });
|
|
99
|
-
expect(out).toContain("No matching chunks found");
|
|
100
|
-
});
|
|
101
|
-
test("getComponentDocsMarkdown returns not-found message without typedoc", () => {
|
|
102
|
-
const msg = getComponentDocsMarkdown("Button");
|
|
103
|
-
expect(msg).toContain("unavailable");
|
|
104
|
-
});
|
|
105
|
-
test("searchDocs returns guidance when queries are empty or whitespace-only", () => {
|
|
106
|
-
expect(searchDocs({ queries: [] })).toContain("No search queries provided");
|
|
107
|
-
expect(searchDocs({ queries: ["", " "] })).toContain("No search queries provided");
|
|
108
|
-
});
|
|
109
|
-
test("searchDocs reports no matches for nonsense query", () => {
|
|
110
|
-
writeFileSync(join(tmp, "resources", "api.md"), ["# API", "", "Some content here."].join("\n"));
|
|
111
|
-
const out = searchDocs({ queries: ["zzzznonexistenttoken99999"] });
|
|
112
|
-
expect(out).toContain("No matching chunks found");
|
|
113
|
-
});
|
|
114
|
-
test("searchDocs omits additional matches when token budget is exhausted", () => {
|
|
115
|
-
writeFileSync(join(tmp, "resources", "one.md"), ["# One", "", "sharedkeyword onebody short."].join("\n"));
|
|
116
|
-
writeFileSync(join(tmp, "resources", "two.md"), ["# Two", "", "sharedkeyword twobody short."].join("\n"));
|
|
117
|
-
const out = searchDocs({ queries: ["sharedkeyword"], tokenLimit: 45 });
|
|
118
|
-
expect(out).toContain("sharedkeyword");
|
|
119
|
-
expect(out).toContain("Additional matches omitted");
|
|
120
|
-
});
|
|
121
|
-
test("indexes nested versioned markdown files", () => {
|
|
122
|
-
const vDir = join(tmp, "versioned", "0.19.0", "nested");
|
|
123
|
-
mkdirSync(vDir, { recursive: true });
|
|
124
|
-
writeFileSync(join(vDir, "guide.md"), ["# Guide", "", "versionedUniqueToken7654321"].join("\n"));
|
|
125
|
-
const out = searchDocs({ queries: ["versionedUniqueToken7654321"] });
|
|
126
|
-
expect(out).toContain("versionedUniqueToken7654321");
|
|
127
|
-
expect(out).toContain("nested/guide.md");
|
|
128
|
-
});
|
|
129
|
-
test("getComponentDocsMarkdown resolves component case-insensitively and adds related excerpts", () => {
|
|
130
|
-
const typeDoc = {
|
|
131
|
-
children: [
|
|
132
|
-
{
|
|
133
|
-
children: [
|
|
134
|
-
{
|
|
135
|
-
children: [
|
|
136
|
-
{
|
|
137
|
-
flags: {},
|
|
138
|
-
name: "label",
|
|
139
|
-
type: { name: "string", type: "intrinsic" },
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
kind: 256,
|
|
143
|
-
name: "ButtonProps",
|
|
144
|
-
},
|
|
145
|
-
],
|
|
146
|
-
name: "Common",
|
|
147
|
-
},
|
|
148
|
-
],
|
|
149
|
-
};
|
|
150
|
-
writeFileSync(join(tmp, "ui-types-documentation.json"), JSON.stringify(typeDoc));
|
|
151
|
-
writeFileSync(join(tmp, "resources", "extra.md"), ["# UI patterns", "", "Extra notes about Button props for search."].join("\n"));
|
|
152
|
-
const lower = getComponentDocsMarkdown("button");
|
|
153
|
-
expect(lower).toContain("# Button");
|
|
154
|
-
expect(lower).toContain("Related markdown excerpts");
|
|
155
|
-
const unknown = getComponentDocsMarkdown("NotARealComponent999");
|
|
156
|
-
expect(unknown).toContain('No component named "NotARealComponent999"');
|
|
157
|
-
expect(unknown).toContain("Examples:");
|
|
158
|
-
});
|
|
159
|
-
test("getComponentDocsMarkdown asks for component when name is blank", () => {
|
|
160
|
-
expect(getComponentDocsMarkdown(" ")).toContain("Pass `component`");
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
//# sourceMappingURL=search.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.test.js","sourceRoot":"","sources":["../../src/__tests__/search.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tools.test.ts"],"names":[],"mappings":""}
|