@terreno/mcp 0.31.0 → 56.0.0-beta.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 (209) hide show
  1. package/dist/bootstrap.d.ts.map +1 -1
  2. package/dist/bootstrap.js +15 -16
  3. package/dist/bootstrap.js.map +1 -1
  4. package/dist/docs/templates/bootstrap/backend/types/models/userTypes.template.md +4 -5
  5. package/dist/docs/templates/bootstrap/frontend/app/_layout.template.tsx +1 -1
  6. package/dist/docs/templates/tools/model.template.md +2 -4
  7. package/dist/docs/versioned/next/README.md +1 -0
  8. package/dist/docs/versioned/next/explanation/README.md +1 -7
  9. package/dist/docs/versioned/next/how-to/README.md +2 -8
  10. package/dist/docs/versioned/next/how-to/deploy-to-gcp.md +228 -20
  11. package/dist/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +445 -0
  12. package/dist/docs/versioned/next/implementationPlans/PLAN_INDEX.md +4 -57
  13. package/dist/docs/versioned/next/implementationPlans/README.md +30 -56
  14. package/dist/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +1 -2
  15. package/dist/docs/versioned/next/implementationPlans/ai-dev-loop-boost.md +0 -1
  16. package/dist/docs/versioned/next/implementationPlans/build-terreno-app-validation.md +0 -1
  17. package/dist/docs/versioned/next/implementationPlans/deploy-to-gcp.md +0 -1
  18. package/dist/docs/versioned/next/implementationPlans/deploy-to-vercel.md +0 -1
  19. package/dist/docs/versioned/next/implementationPlans/deployment-foundation.md +0 -1
  20. package/dist/docs/versioned/next/implementationPlans/docs-reference-coverage.md +0 -1
  21. package/dist/docs/versioned/next/implementationPlans/docs-tutorials-ai-first.md +0 -1
  22. package/dist/docs/versioned/next/implementationPlans/examples-demo-coverage.md +0 -1
  23. package/dist/docs/versioned/next/implementationPlans/oss-governance-baseline.md +0 -1
  24. package/dist/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +0 -1
  25. package/dist/docs/versioned/next/implementationPlans/public-roadmap-github.md +0 -1
  26. package/dist/docs/versioned/next/implementationPlans/rtk-to-syncdb-migration-docs.md +52 -47
  27. package/dist/docs/versioned/next/implementationPlans/syncdb-api-inventory.md +303 -0
  28. package/dist/docs/versioned/next/implementationPlans/syncdb-codegen.md +252 -0
  29. package/dist/docs/versioned/next/implementationPlans/syncdb-local-first.md +468 -420
  30. package/dist/docs/versioned/next/implementationPlans/syncdb-phase-c-design.md +425 -0
  31. package/dist/docs/versioned/next/implementationPlans/terreno-syncdb-2.md +800 -0
  32. package/dist/docs/versioned/next/implementationPlans/upgrade-guides-and-skill.md +0 -1
  33. package/dist/docs/versioned/next/implementationPlans/web-ssr-and-admin-spa.md +0 -1
  34. package/dist/docs/versioned/next/reference/README.md +1 -4
  35. package/dist/docs/versioned/next/reference/environment-variables.md +382 -220
  36. package/dist/docs/versioned/next/reference/syncdb.md +456 -0
  37. package/dist/docs/versioned/next/superpowers/plans/2026-07-28-admin-mobile-navigation.md +97 -0
  38. package/dist/docs/versioned/next/superpowers/specs/2026-07-28-admin-mobile-navigation-design.md +36 -0
  39. package/dist/docs/versioned/next/tasks/agentic-sdlc-plugin.md +5 -5
  40. package/dist/docs/versioned/next/tasks/deploy-to-gcp.md +11 -11
  41. package/dist/docs/versioned/next/tasks/deployment-foundation.md +12 -12
  42. package/dist/docs/versioned/next/tasks/docs-reference-coverage.md +4 -4
  43. package/dist/docs/versioned/next/tasks/oss-governance-baseline.md +18 -18
  44. package/dist/docs/versioned/next/tasks/positioning-django-rails-universal.md +4 -4
  45. package/dist/docs/versioned/next/tasks/public-roadmap-github.md +15 -15
  46. package/dist/docs/versioned/next/tasks/rtk-to-syncdb-migration-docs.md +10 -10
  47. package/dist/docs/versioned/next/tasks/syncdb-codegen.md +65 -0
  48. package/dist/docs/versioned/next/tasks/syncdb-local-first.md +434 -117
  49. package/package.json +4 -5
  50. package/src/docs/templates/bootstrap/backend/types/models/userTypes.template.md +4 -5
  51. package/src/docs/templates/bootstrap/frontend/app/_layout.template.tsx +1 -1
  52. package/src/docs/templates/tools/model.template.md +2 -4
  53. package/src/docs/versioned/next/README.md +1 -0
  54. package/src/docs/versioned/next/explanation/README.md +1 -7
  55. package/src/docs/versioned/next/how-to/README.md +2 -8
  56. package/src/docs/versioned/next/how-to/deploy-to-gcp.md +228 -20
  57. package/src/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +445 -0
  58. package/src/docs/versioned/next/implementationPlans/PLAN_INDEX.md +4 -57
  59. package/src/docs/versioned/next/implementationPlans/README.md +30 -56
  60. package/src/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +1 -2
  61. package/src/docs/versioned/next/implementationPlans/ai-dev-loop-boost.md +0 -1
  62. package/src/docs/versioned/next/implementationPlans/build-terreno-app-validation.md +0 -1
  63. package/src/docs/versioned/next/implementationPlans/deploy-to-gcp.md +0 -1
  64. package/src/docs/versioned/next/implementationPlans/deploy-to-vercel.md +0 -1
  65. package/src/docs/versioned/next/implementationPlans/deployment-foundation.md +0 -1
  66. package/src/docs/versioned/next/implementationPlans/docs-reference-coverage.md +0 -1
  67. package/src/docs/versioned/next/implementationPlans/docs-tutorials-ai-first.md +0 -1
  68. package/src/docs/versioned/next/implementationPlans/examples-demo-coverage.md +0 -1
  69. package/src/docs/versioned/next/implementationPlans/oss-governance-baseline.md +0 -1
  70. package/src/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +0 -1
  71. package/src/docs/versioned/next/implementationPlans/public-roadmap-github.md +0 -1
  72. package/src/docs/versioned/next/implementationPlans/rtk-to-syncdb-migration-docs.md +52 -47
  73. package/src/docs/versioned/next/implementationPlans/syncdb-api-inventory.md +303 -0
  74. package/src/docs/versioned/next/implementationPlans/syncdb-codegen.md +252 -0
  75. package/src/docs/versioned/next/implementationPlans/syncdb-local-first.md +468 -420
  76. package/src/docs/versioned/next/implementationPlans/syncdb-phase-c-design.md +425 -0
  77. package/src/docs/versioned/next/implementationPlans/terreno-syncdb-2.md +800 -0
  78. package/src/docs/versioned/next/implementationPlans/upgrade-guides-and-skill.md +0 -1
  79. package/src/docs/versioned/next/implementationPlans/web-ssr-and-admin-spa.md +0 -1
  80. package/src/docs/versioned/next/reference/README.md +1 -4
  81. package/src/docs/versioned/next/reference/environment-variables.md +382 -220
  82. package/src/docs/versioned/next/reference/syncdb.md +456 -0
  83. package/src/docs/versioned/next/superpowers/plans/2026-07-28-admin-mobile-navigation.md +97 -0
  84. package/src/docs/versioned/next/superpowers/specs/2026-07-28-admin-mobile-navigation-design.md +36 -0
  85. package/src/docs/versioned/next/tasks/agentic-sdlc-plugin.md +5 -5
  86. package/src/docs/versioned/next/tasks/deploy-to-gcp.md +11 -11
  87. package/src/docs/versioned/next/tasks/deployment-foundation.md +12 -12
  88. package/src/docs/versioned/next/tasks/docs-reference-coverage.md +4 -4
  89. package/src/docs/versioned/next/tasks/oss-governance-baseline.md +18 -18
  90. package/src/docs/versioned/next/tasks/positioning-django-rails-universal.md +4 -4
  91. package/src/docs/versioned/next/tasks/public-roadmap-github.md +15 -15
  92. package/src/docs/versioned/next/tasks/rtk-to-syncdb-migration-docs.md +10 -10
  93. package/src/docs/versioned/next/tasks/syncdb-codegen.md +65 -0
  94. package/src/docs/versioned/next/tasks/syncdb-local-first.md +434 -117
  95. package/LICENSE +0 -21
  96. package/dist/__tests__/bootstrap.test.d.ts +0 -2
  97. package/dist/__tests__/bootstrap.test.d.ts.map +0 -1
  98. package/dist/__tests__/bootstrap.test.js +0 -299
  99. package/dist/__tests__/bootstrap.test.js.map +0 -1
  100. package/dist/__tests__/databaseQuery.test.d.ts +0 -2
  101. package/dist/__tests__/databaseQuery.test.d.ts.map +0 -1
  102. package/dist/__tests__/databaseQuery.test.js +0 -83
  103. package/dist/__tests__/databaseQuery.test.js.map +0 -1
  104. package/dist/__tests__/docsRoot.test.d.ts +0 -2
  105. package/dist/__tests__/docsRoot.test.d.ts.map +0 -1
  106. package/dist/__tests__/docsRoot.test.js +0 -59
  107. package/dist/__tests__/docsRoot.test.js.map +0 -1
  108. package/dist/__tests__/inferPackages.test.d.ts +0 -2
  109. package/dist/__tests__/inferPackages.test.d.ts.map +0 -1
  110. package/dist/__tests__/inferPackages.test.js +0 -35
  111. package/dist/__tests__/inferPackages.test.js.map +0 -1
  112. package/dist/__tests__/preload.d.ts +0 -2
  113. package/dist/__tests__/preload.d.ts.map +0 -1
  114. package/dist/__tests__/preload.js +0 -12
  115. package/dist/__tests__/preload.js.map +0 -1
  116. package/dist/__tests__/prompts.test.d.ts +0 -2
  117. package/dist/__tests__/prompts.test.d.ts.map +0 -1
  118. package/dist/__tests__/prompts.test.js +0 -295
  119. package/dist/__tests__/prompts.test.js.map +0 -1
  120. package/dist/__tests__/resources.test.d.ts +0 -2
  121. package/dist/__tests__/resources.test.d.ts.map +0 -1
  122. package/dist/__tests__/resources.test.js +0 -352
  123. package/dist/__tests__/resources.test.js.map +0 -1
  124. package/dist/__tests__/search.test.d.ts +0 -2
  125. package/dist/__tests__/search.test.d.ts.map +0 -1
  126. package/dist/__tests__/search.test.js +0 -163
  127. package/dist/__tests__/search.test.js.map +0 -1
  128. package/dist/__tests__/tools.test.d.ts +0 -2
  129. package/dist/__tests__/tools.test.d.ts.map +0 -1
  130. package/dist/__tests__/tools.test.js +0 -540
  131. package/dist/__tests__/tools.test.js.map +0 -1
  132. package/dist/__tests__/upgradeGuide.test.d.ts +0 -2
  133. package/dist/__tests__/upgradeGuide.test.d.ts.map +0 -1
  134. package/dist/__tests__/upgradeGuide.test.js +0 -22
  135. package/dist/__tests__/upgradeGuide.test.js.map +0 -1
  136. package/dist/docs/upgrades/0.31.0.md +0 -60
  137. package/dist/docs/versioned/next/explanation/deployment-architecture-gcp.md +0 -65
  138. package/dist/docs/versioned/next/explanation/deployment-baseline.md +0 -78
  139. package/dist/docs/versioned/next/explanation/positioning.md +0 -164
  140. package/dist/docs/versioned/next/explanation/repository-settings.md +0 -44
  141. package/dist/docs/versioned/next/explanation/roadmap-process.md +0 -330
  142. package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +0 -866
  143. package/dist/docs/versioned/next/how-to/build-for-web.md +0 -69
  144. package/dist/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +0 -115
  145. package/dist/docs/versioned/next/how-to/deploy-web-to-gcs-cdn.md +0 -183
  146. package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +0 -114
  147. package/dist/docs/versioned/next/implementationPlans/billing-stripe.md +0 -158
  148. package/dist/docs/versioned/next/implementationPlans/comms-abstraction.md +0 -240
  149. package/dist/docs/versioned/next/implementationPlans/comms-adapter-expo-push.md +0 -107
  150. package/dist/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +0 -107
  151. package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +0 -102
  152. package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-verify.md +0 -93
  153. package/dist/docs/versioned/next/implementationPlans/infra-mcp-research.md +0 -188
  154. package/dist/docs/versioned/next/implementationPlans/infra-mcp.md +0 -269
  155. package/dist/docs/versioned/next/implementationPlans/native-module-baseline.md +0 -105
  156. package/dist/docs/versioned/next/implementationPlans/orgs-and-teams.md +0 -158
  157. package/dist/docs/versioned/next/implementationPlans/password-reset-and-email-verification.md +0 -147
  158. package/dist/docs/versioned/next/reference/admin-spa.md +0 -130
  159. package/dist/docs/versioned/next/reference/ai.md +0 -519
  160. package/dist/docs/versioned/next/reference/test.md +0 -108
  161. package/dist/docs/versioned/next/roadmap.md +0 -9
  162. package/dist/docs/versioned/next/tasks/README.md +0 -42
  163. package/dist/docs/versioned/next/tasks/billing-stripe.md +0 -75
  164. package/dist/docs/versioned/next/tasks/comms-abstraction.md +0 -77
  165. package/dist/docs/versioned/next/tasks/comms-adapter-expo-push.md +0 -29
  166. package/dist/docs/versioned/next/tasks/comms-adapter-sendgrid.md +0 -29
  167. package/dist/docs/versioned/next/tasks/comms-adapter-twilio-sms.md +0 -29
  168. package/dist/docs/versioned/next/tasks/comms-adapter-twilio-verify.md +0 -19
  169. package/dist/docs/versioned/next/tasks/infra-mcp.md +0 -43
  170. package/dist/docs/versioned/next/tasks/native-module-baseline.md +0 -42
  171. package/dist/docs/versioned/next/tasks/orgs-and-teams.md +0 -70
  172. package/dist/docs/versioned/next/tasks/password-reset-and-email-verification.md +0 -60
  173. package/src/docs/upgrades/0.31.0.md +0 -60
  174. package/src/docs/versioned/next/explanation/deployment-architecture-gcp.md +0 -65
  175. package/src/docs/versioned/next/explanation/deployment-baseline.md +0 -78
  176. package/src/docs/versioned/next/explanation/positioning.md +0 -164
  177. package/src/docs/versioned/next/explanation/repository-settings.md +0 -44
  178. package/src/docs/versioned/next/explanation/roadmap-process.md +0 -330
  179. package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +0 -866
  180. package/src/docs/versioned/next/how-to/build-for-web.md +0 -69
  181. package/src/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +0 -115
  182. package/src/docs/versioned/next/how-to/deploy-web-to-gcs-cdn.md +0 -183
  183. package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +0 -114
  184. package/src/docs/versioned/next/implementationPlans/billing-stripe.md +0 -158
  185. package/src/docs/versioned/next/implementationPlans/comms-abstraction.md +0 -240
  186. package/src/docs/versioned/next/implementationPlans/comms-adapter-expo-push.md +0 -107
  187. package/src/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +0 -107
  188. package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +0 -102
  189. package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-verify.md +0 -93
  190. package/src/docs/versioned/next/implementationPlans/infra-mcp-research.md +0 -188
  191. package/src/docs/versioned/next/implementationPlans/infra-mcp.md +0 -269
  192. package/src/docs/versioned/next/implementationPlans/native-module-baseline.md +0 -105
  193. package/src/docs/versioned/next/implementationPlans/orgs-and-teams.md +0 -158
  194. package/src/docs/versioned/next/implementationPlans/password-reset-and-email-verification.md +0 -147
  195. package/src/docs/versioned/next/reference/admin-spa.md +0 -130
  196. package/src/docs/versioned/next/reference/ai.md +0 -519
  197. package/src/docs/versioned/next/reference/test.md +0 -108
  198. package/src/docs/versioned/next/roadmap.md +0 -9
  199. package/src/docs/versioned/next/tasks/README.md +0 -42
  200. package/src/docs/versioned/next/tasks/billing-stripe.md +0 -75
  201. package/src/docs/versioned/next/tasks/comms-abstraction.md +0 -77
  202. package/src/docs/versioned/next/tasks/comms-adapter-expo-push.md +0 -29
  203. package/src/docs/versioned/next/tasks/comms-adapter-sendgrid.md +0 -29
  204. package/src/docs/versioned/next/tasks/comms-adapter-twilio-sms.md +0 -29
  205. package/src/docs/versioned/next/tasks/comms-adapter-twilio-verify.md +0 -19
  206. package/src/docs/versioned/next/tasks/infra-mcp.md +0 -43
  207. package/src/docs/versioned/next/tasks/native-module-baseline.md +0 -42
  208. package/src/docs/versioned/next/tasks/orgs-and-teams.md +0 -70
  209. package/src/docs/versioned/next/tasks/password-reset-and-email-verification.md +0 -60
@@ -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":"AAAA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,eAAe,EACf,0BAA0B,EAC1B,SAAS,GAEV,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC1D,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACpD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;QAE5E,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;QAElE,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC;QAEhE,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;QAElE,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;QAE5E,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACxD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACtD,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9E,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjF,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAC;gBAC7B,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAC;aAC9B;SACF,CAAC,CACH,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACJ,iBAAiB,CAAC;YAChB,WAAW,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAC;YAChD,IAAI,EAAE,OAAO;SACd,CAAC,CACH,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;YACjB,aAAa,EAAE,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;SACrD,CAAC,CACH,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,CACJ,iBAAiB,CAAC;YAChB,WAAW,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAC;YAC/B,IAAI,EAAE,YAAY;SACnB,CAAC,CACH,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CACJ,iBAAiB,CAAC;YAChB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,YAAY;SACnB,CAAC,CACH,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,iBAAiB,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,CACJ,0BAA0B,CAAC;YACzB,QAAQ,EAAE,CAAC,EAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;SACjD,CAAC,CACH,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,0BAA0B,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE;gBACR;oBACE,QAAQ,EAAE;wBACR;4BACE,QAAQ,EAAE;gCACR;oCACE,OAAO,EAAE;wCACP,SAAS,EAAE;4CACT;gDACE,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,uBAAuB,EAAC,CAAC;gDAC1C,GAAG,EAAE,UAAU;6CAChB;yCACF;wCACD,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC;qCACpC;oCACD,KAAK,EAAE,EAAC,UAAU,EAAE,IAAI,EAAC;oCACzB,IAAI,EAAE,SAAS;oCACf,IAAI,EAAE;wCACJ,IAAI,EAAE,OAAO;wCACb,KAAK,EAAE;4CACL,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAC;4CACnC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAC;yCACtC;qCACF;iCACF;gCACD;oCACE,KAAK,EAAE,EAAE;oCACT,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAC;iCAC1C;6BACF;4BACD,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,aAAa;yBACpB;wBACD;4BACE,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,oBAAoB;yBAC3B;wBACD;4BACE,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,YAAY;yBACnB;qBACF;oBACD,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAiC,CAAC,CAAC;QACjF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACpE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE;gBACR;oBACE,QAAQ,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAC,CAAC;oBAC1E,EAAE,EAAE,CAAC;oBACL,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC;QACF,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,GAAG,uBAAuB,CAAC;YACjC,aAAa,EAAE,aAAa;YAC5B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE;gBACL;oBACE,YAAY,EAAE,WAAW;oBACzB,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,yBAAyB;iBAChC;gBACD;oBACE,WAAW,EAAE,EAAE;oBACf,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,GAAG,uBAAuB,CAAC;YACjC,aAAa,EAAE,aAAa;YAC5B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,GAAG,6BAA6B,CAAC;YACvC;gBACE,aAAa,EAAE,aAAa;gBAC5B,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE;oBACL,EAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC;oBAC/D,EAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAC;iBACtE;aACF;YACD;gBACE,aAAa,EAAE,aAAa;gBAC5B,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,EAAE;aACV;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnC,qCAAqC;QACrC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=search.test.d.ts.map
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tools.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tools.test.ts"],"names":[],"mappings":""}