@brainfish-ai/devdoc 0.1.41 → 0.1.43

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 (400) hide show
  1. package/ai-agents/.claude/skills/bootstrap-docs/SKILL.md +710 -79
  2. package/ai-agents/.claude/skills/check-docs/SKILL.md +83 -8
  3. package/ai-agents/.claude/skills/create-doc/SKILL.md +267 -55
  4. package/ai-agents/.claude/skills/update-doc/SKILL.md +162 -63
  5. package/ai-agents/.cursor/rules/devdoc-bootstrap.mdc +145 -15
  6. package/ai-agents/.cursor/rules/devdoc-create.mdc +108 -57
  7. package/ai-agents/.cursor/rules/devdoc-update.mdc +93 -70
  8. package/ai-agents/.cursor/rules/devdoc.mdc +21 -0
  9. package/ai-agents/schemas/docs.schema.json +332 -0
  10. package/ai-agents/schemas/theme.schema.json +243 -0
  11. package/dist/cli/commands/create.js +4 -9
  12. package/dist/cli/commands/deploy.js +50 -25
  13. package/dist/cli/commands/dev.js +19 -10
  14. package/package.json +3 -2
  15. package/renderer/app/api/assets/[...path]/route.js +108 -0
  16. package/renderer/app/api/assets/route.js +114 -0
  17. package/renderer/app/api/assets/upload/route.js +163 -0
  18. package/renderer/app/api/auth-schemes/route.js +58 -0
  19. package/renderer/app/api/chat/route.js +759 -0
  20. package/renderer/app/api/codegen/route.js +52 -0
  21. package/renderer/app/api/collections/route.js +675 -0
  22. package/renderer/app/api/debug/route.js +47 -0
  23. package/renderer/app/api/deploy/route.js +199 -0
  24. package/renderer/app/api/device/route.js +36 -0
  25. package/renderer/app/api/docs/route.js +205 -0
  26. package/renderer/app/api/domains/add/route.js +121 -0
  27. package/renderer/app/api/domains/lookup/route.js +43 -0
  28. package/renderer/app/api/domains/remove/route.js +89 -0
  29. package/renderer/app/api/domains/status/route.js +140 -0
  30. package/renderer/app/api/domains/verify/route.js +168 -0
  31. package/renderer/app/api/keys/regenerate/route.js +71 -0
  32. package/renderer/app/api/local-assets/[...path]/route.js +108 -0
  33. package/renderer/app/api/openapi-spec/route.js +73 -0
  34. package/renderer/app/api/projects/[slug]/route.js +129 -0
  35. package/renderer/app/api/projects/[slug]/stats/route.js +80 -0
  36. package/renderer/app/api/projects/register/route.js +176 -0
  37. package/renderer/app/api/proxy/route.js +139 -0
  38. package/renderer/app/api/proxy-stream/route.js +156 -0
  39. package/renderer/app/api/redirects/route.js +35 -0
  40. package/renderer/app/api/schema/route.js +85 -0
  41. package/renderer/app/api/subdomains/check/route.js +158 -0
  42. package/renderer/app/api/suggestions/route.js +175 -0
  43. package/renderer/app/layout.js +47 -0
  44. package/renderer/app/llms-full.txt/route.js +257 -0
  45. package/renderer/app/llms.txt/route.js +219 -0
  46. package/renderer/app/page.js +12 -0
  47. package/renderer/app/robots.txt/route.js +66 -0
  48. package/renderer/app/sitemap.xml/route.js +145 -0
  49. package/renderer/components/docs/index.js +8 -0
  50. package/renderer/components/docs/mdx/accordion.js +113 -0
  51. package/renderer/components/docs/mdx/badge.js +72 -0
  52. package/renderer/components/docs/mdx/callouts.js +137 -0
  53. package/renderer/components/docs/mdx/cards.js +175 -0
  54. package/renderer/components/docs/mdx/changelog.js +100 -0
  55. package/renderer/components/docs/mdx/code-block.js +147 -0
  56. package/renderer/components/docs/mdx/code-group.js +287 -0
  57. package/renderer/components/docs/mdx/file-embeds.js +82 -0
  58. package/renderer/components/docs/mdx/frame.js +59 -0
  59. package/renderer/components/docs/mdx/highlight.js +90 -0
  60. package/renderer/components/docs/mdx/iframe.js +69 -0
  61. package/renderer/components/docs/mdx/image.js +135 -0
  62. package/renderer/components/docs/mdx/index.js +134 -0
  63. package/renderer/components/docs/mdx/landing.js +315 -0
  64. package/renderer/components/docs/mdx/mermaid.js +212 -0
  65. package/renderer/components/docs/mdx/param-field.js +112 -0
  66. package/renderer/components/docs/mdx/steps.js +74 -0
  67. package/renderer/components/docs/mdx/tabs.js +50 -0
  68. package/renderer/components/docs/mdx-renderer.js +77 -0
  69. package/renderer/components/docs/navigation/breadcrumbs.js +64 -0
  70. package/renderer/components/docs/navigation/index.js +6 -0
  71. package/renderer/components/docs/navigation/page-nav.js +57 -0
  72. package/renderer/components/docs/navigation/sidebar.js +375 -0
  73. package/renderer/components/docs/navigation/toc.js +89 -0
  74. package/renderer/components/docs/notice.js +77 -0
  75. package/renderer/components/docs-header.js +202 -0
  76. package/renderer/components/docs-viewer/agent/agent-chat.js +1930 -0
  77. package/renderer/components/docs-viewer/agent/cards/debug-context-card.js +107 -0
  78. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.js +57 -0
  79. package/renderer/components/docs-viewer/agent/cards/index.js +45 -0
  80. package/renderer/components/docs-viewer/agent/cards/response-options-card.js +154 -0
  81. package/renderer/components/docs-viewer/agent/cards/types.js +22 -0
  82. package/renderer/components/docs-viewer/agent/chat-message.js +2 -0
  83. package/renderer/components/docs-viewer/agent/index.js +4 -0
  84. package/renderer/components/docs-viewer/agent/messages/assistant-message.js +108 -0
  85. package/renderer/components/docs-viewer/agent/messages/chat-message.js +34 -0
  86. package/renderer/components/docs-viewer/agent/messages/index.js +6 -0
  87. package/renderer/components/docs-viewer/agent/messages/tool-call-display.js +1065 -0
  88. package/renderer/components/docs-viewer/agent/messages/types.js +2 -0
  89. package/renderer/components/docs-viewer/agent/messages/typing-indicator.js +26 -0
  90. package/renderer/components/docs-viewer/agent/messages/user-message.js +37 -0
  91. package/renderer/components/docs-viewer/code-editor/{index.tsx → index.js} +1 -1
  92. package/renderer/components/docs-viewer/code-editor/notes-mode.js +1338 -0
  93. package/renderer/components/docs-viewer/content/changelog-page.js +297 -0
  94. package/renderer/components/docs-viewer/content/doc-page.js +264 -0
  95. package/renderer/components/docs-viewer/content/documentation-viewer.js +14 -0
  96. package/renderer/components/docs-viewer/content/index.js +29 -0
  97. package/renderer/components/docs-viewer/content/not-found-page.js +300 -0
  98. package/renderer/components/docs-viewer/content/request-details.js +528 -0
  99. package/renderer/components/docs-viewer/content/sections/auth.js +108 -0
  100. package/renderer/components/docs-viewer/content/sections/body.js +80 -0
  101. package/renderer/components/docs-viewer/content/sections/headers.js +64 -0
  102. package/renderer/components/docs-viewer/content/sections/overview.js +56 -0
  103. package/renderer/components/docs-viewer/content/sections/parameters.js +64 -0
  104. package/renderer/components/docs-viewer/content/sections/responses.js +91 -0
  105. package/renderer/components/docs-viewer/global-auth-modal.js +427 -0
  106. package/renderer/components/docs-viewer/index.js +1552 -0
  107. package/renderer/components/docs-viewer/playground/auth-editor.js +418 -0
  108. package/renderer/components/docs-viewer/playground/body-editor.js +240 -0
  109. package/renderer/components/docs-viewer/playground/code-editor.js +135 -0
  110. package/renderer/components/docs-viewer/playground/code-snippet.js +393 -0
  111. package/renderer/components/docs-viewer/playground/graphql-playground.js +734 -0
  112. package/renderer/components/docs-viewer/playground/index.js +682 -0
  113. package/renderer/components/docs-viewer/playground/key-value-editor.js +317 -0
  114. package/renderer/components/docs-viewer/playground/method-selector.js +65 -0
  115. package/renderer/components/docs-viewer/playground/request-builder.js +181 -0
  116. package/renderer/components/docs-viewer/playground/request-tabs.js +240 -0
  117. package/renderer/components/docs-viewer/playground/response-cards/idle-card.js +42 -0
  118. package/renderer/components/docs-viewer/playground/response-cards/index.js +72 -0
  119. package/renderer/components/docs-viewer/playground/response-cards/loading-card.js +24 -0
  120. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.js +28 -0
  121. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.js +308 -0
  122. package/renderer/components/docs-viewer/playground/response-cards/types.js +9 -0
  123. package/renderer/components/docs-viewer/playground/response-viewer.js +18 -0
  124. package/renderer/components/docs-viewer/search/index.js +2 -0
  125. package/renderer/components/docs-viewer/search/search-dialog.js +367 -0
  126. package/renderer/components/docs-viewer/search/use-search.js +89 -0
  127. package/renderer/components/docs-viewer/shared/markdown-renderer.js +423 -0
  128. package/renderer/components/docs-viewer/shared/method-badge.js +23 -0
  129. package/renderer/components/docs-viewer/shared/schema-viewer.js +321 -0
  130. package/renderer/components/docs-viewer/sidebar/collection-tree.js +222 -0
  131. package/renderer/components/docs-viewer/sidebar/endpoint-options.js +512 -0
  132. package/renderer/components/docs-viewer/sidebar/index.js +196 -0
  133. package/renderer/components/docs-viewer/sidebar/right-sidebar.js +163 -0
  134. package/renderer/components/docs-viewer/sidebar/sidebar-group.js +87 -0
  135. package/renderer/components/docs-viewer/sidebar/sidebar-item.js +172 -0
  136. package/renderer/components/docs-viewer/sidebar/sidebar-section.js +31 -0
  137. package/renderer/components/theme-provider.js +10 -0
  138. package/renderer/components/theme-toggle.js +106 -0
  139. package/renderer/components/ui/badge.js +29 -0
  140. package/renderer/components/ui/button.js +40 -0
  141. package/renderer/components/ui/dialog.js +50 -0
  142. package/renderer/components/ui/dropdown-menu.js +143 -0
  143. package/renderer/components/ui/input.js +12 -0
  144. package/renderer/components/ui/label.js +13 -0
  145. package/renderer/components/ui/navigation-menu.js +83 -0
  146. package/renderer/components/ui/select.js +116 -0
  147. package/renderer/components/ui/spinner.js +92 -0
  148. package/renderer/components/ui/tabs.js +34 -0
  149. package/renderer/components/ui/tooltip.js +43 -0
  150. package/renderer/hooks/use-code-copy.js +76 -0
  151. package/renderer/hooks/use-openapi-title.js +33 -0
  152. package/renderer/lib/api-docs/agent/index.js +4 -0
  153. package/renderer/lib/api-docs/agent/indexer.js +254 -0
  154. package/renderer/lib/api-docs/agent/spec-summary.js +227 -0
  155. package/renderer/lib/api-docs/agent/types.js +5 -0
  156. package/renderer/lib/api-docs/auth/auth-context.js +157 -0
  157. package/renderer/lib/api-docs/auth/auth-storage.js +66 -0
  158. package/renderer/lib/api-docs/auth/crypto.js +64 -0
  159. package/renderer/lib/api-docs/auth/index.js +3 -0
  160. package/renderer/lib/api-docs/code-editor/db.js +145 -0
  161. package/renderer/lib/api-docs/code-editor/hooks.js +254 -0
  162. package/renderer/lib/api-docs/code-editor/{index.ts → index.js} +3 -4
  163. package/renderer/lib/api-docs/code-editor/mode-context.js +154 -0
  164. package/renderer/lib/api-docs/code-editor/types.js +53 -0
  165. package/renderer/lib/api-docs/codegen/definitions.js +258 -0
  166. package/renderer/lib/api-docs/codegen/har.js +171 -0
  167. package/renderer/lib/api-docs/codegen/index.js +118 -0
  168. package/renderer/lib/api-docs/factories.js +136 -0
  169. package/renderer/lib/api-docs/{index.ts → index.js} +5 -10
  170. package/renderer/lib/api-docs/mobile-context.js +79 -0
  171. package/renderer/lib/api-docs/navigation-context.js +62 -0
  172. package/renderer/lib/api-docs/parsers/graphql/index.js +50 -0
  173. package/renderer/lib/api-docs/parsers/graphql/parser.js +350 -0
  174. package/renderer/lib/api-docs/parsers/graphql/transformer.js +215 -0
  175. package/renderer/lib/api-docs/parsers/graphql/types.js +46 -0
  176. package/renderer/lib/api-docs/parsers/openapi/dereferencer.js +43 -0
  177. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.js +486 -0
  178. package/renderer/lib/api-docs/parsers/openapi/extractors/body.js +295 -0
  179. package/renderer/lib/api-docs/parsers/openapi/extractors/index.js +132 -0
  180. package/renderer/lib/api-docs/parsers/openapi/index.js +127 -0
  181. package/renderer/lib/api-docs/parsers/openapi/transformer.js +192 -0
  182. package/renderer/lib/api-docs/parsers/openapi/validator.js +24 -0
  183. package/renderer/lib/api-docs/playground/context.js +65 -0
  184. package/renderer/lib/api-docs/playground/navigation-context.js +74 -0
  185. package/renderer/lib/api-docs/playground/request-builder.js +163 -0
  186. package/renderer/lib/api-docs/playground/request-runner.js +224 -0
  187. package/renderer/lib/api-docs/playground/types.js +5 -0
  188. package/renderer/lib/api-docs/types.js +23 -0
  189. package/renderer/lib/api-docs/utils.js +212 -0
  190. package/renderer/lib/cache.js +157 -0
  191. package/renderer/lib/docs/config/domain-schema.js +161 -0
  192. package/renderer/lib/docs/config/index.js +5 -0
  193. package/renderer/lib/docs/config/loader.js +113 -0
  194. package/renderer/lib/docs/config/schema.js +269 -0
  195. package/renderer/lib/docs/index.js +8 -0
  196. package/renderer/lib/docs/mdx/compiler.js +128 -0
  197. package/renderer/lib/docs/mdx/frontmatter.js +73 -0
  198. package/renderer/lib/docs/mdx/index.js +8 -0
  199. package/renderer/lib/docs/navigation/generator.js +269 -0
  200. package/renderer/lib/docs/navigation/index.js +4 -0
  201. package/renderer/lib/docs/navigation/types.js +9 -0
  202. package/renderer/lib/docs-navigation-context.js +40 -0
  203. package/renderer/lib/multi-tenant/context.js +80 -0
  204. package/renderer/lib/storage/blob.js +767 -0
  205. package/renderer/lib/utils/icons.js +30 -0
  206. package/renderer/lib/utils.js +5 -0
  207. package/renderer/next.config.js +62 -0
  208. package/renderer/tsconfig.json +23 -5
  209. package/renderer/app/api/assets/[...path]/route.ts +0 -123
  210. package/renderer/app/api/assets/route.ts +0 -124
  211. package/renderer/app/api/assets/upload/route.ts +0 -177
  212. package/renderer/app/api/auth-schemes/route.ts +0 -77
  213. package/renderer/app/api/chat/route.ts +0 -858
  214. package/renderer/app/api/codegen/route.ts +0 -72
  215. package/renderer/app/api/collections/route.ts +0 -1002
  216. package/renderer/app/api/debug/route.ts +0 -53
  217. package/renderer/app/api/deploy/route.ts +0 -234
  218. package/renderer/app/api/device/route.ts +0 -42
  219. package/renderer/app/api/docs/route.ts +0 -201
  220. package/renderer/app/api/domains/add/route.ts +0 -132
  221. package/renderer/app/api/domains/lookup/route.ts +0 -43
  222. package/renderer/app/api/domains/remove/route.ts +0 -100
  223. package/renderer/app/api/domains/status/route.ts +0 -158
  224. package/renderer/app/api/domains/verify/route.ts +0 -181
  225. package/renderer/app/api/keys/regenerate/route.ts +0 -80
  226. package/renderer/app/api/local-assets/[...path]/route.ts +0 -122
  227. package/renderer/app/api/openapi-spec/route.ts +0 -151
  228. package/renderer/app/api/projects/[slug]/route.ts +0 -153
  229. package/renderer/app/api/projects/[slug]/stats/route.ts +0 -96
  230. package/renderer/app/api/projects/register/route.ts +0 -152
  231. package/renderer/app/api/proxy/route.ts +0 -149
  232. package/renderer/app/api/proxy-stream/route.ts +0 -168
  233. package/renderer/app/api/redirects/route.ts +0 -47
  234. package/renderer/app/api/schema/route.ts +0 -73
  235. package/renderer/app/api/subdomains/check/route.ts +0 -172
  236. package/renderer/app/api/suggestions/route.ts +0 -144
  237. package/renderer/app/layout.tsx +0 -54
  238. package/renderer/app/llms-full.txt/route.ts +0 -346
  239. package/renderer/app/llms.txt/route.ts +0 -279
  240. package/renderer/app/page.tsx +0 -14
  241. package/renderer/app/robots.txt/route.ts +0 -84
  242. package/renderer/app/sitemap.xml/route.ts +0 -199
  243. package/renderer/components/docs/index.ts +0 -12
  244. package/renderer/components/docs/mdx/accordion.tsx +0 -169
  245. package/renderer/components/docs/mdx/badge.tsx +0 -132
  246. package/renderer/components/docs/mdx/callouts.tsx +0 -154
  247. package/renderer/components/docs/mdx/cards.tsx +0 -241
  248. package/renderer/components/docs/mdx/changelog.tsx +0 -120
  249. package/renderer/components/docs/mdx/code-block.tsx +0 -186
  250. package/renderer/components/docs/mdx/code-group.tsx +0 -421
  251. package/renderer/components/docs/mdx/file-embeds.tsx +0 -105
  252. package/renderer/components/docs/mdx/frame.tsx +0 -112
  253. package/renderer/components/docs/mdx/highlight.tsx +0 -151
  254. package/renderer/components/docs/mdx/iframe.tsx +0 -134
  255. package/renderer/components/docs/mdx/image.tsx +0 -235
  256. package/renderer/components/docs/mdx/index.ts +0 -237
  257. package/renderer/components/docs/mdx/landing.tsx +0 -684
  258. package/renderer/components/docs/mdx/mermaid.tsx +0 -240
  259. package/renderer/components/docs/mdx/param-field.tsx +0 -200
  260. package/renderer/components/docs/mdx/steps.tsx +0 -113
  261. package/renderer/components/docs/mdx/tabs.tsx +0 -86
  262. package/renderer/components/docs/mdx-renderer.tsx +0 -100
  263. package/renderer/components/docs/navigation/breadcrumbs.tsx +0 -76
  264. package/renderer/components/docs/navigation/index.ts +0 -8
  265. package/renderer/components/docs/navigation/page-nav.tsx +0 -64
  266. package/renderer/components/docs/navigation/sidebar.tsx +0 -515
  267. package/renderer/components/docs/navigation/toc.tsx +0 -113
  268. package/renderer/components/docs/notice.tsx +0 -105
  269. package/renderer/components/docs-header.tsx +0 -278
  270. package/renderer/components/docs-viewer/agent/agent-chat.tsx +0 -2076
  271. package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +0 -90
  272. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +0 -49
  273. package/renderer/components/docs-viewer/agent/cards/index.tsx +0 -50
  274. package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +0 -212
  275. package/renderer/components/docs-viewer/agent/cards/types.ts +0 -84
  276. package/renderer/components/docs-viewer/agent/chat-message.tsx +0 -17
  277. package/renderer/components/docs-viewer/agent/index.tsx +0 -6
  278. package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +0 -119
  279. package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +0 -46
  280. package/renderer/components/docs-viewer/agent/messages/index.ts +0 -17
  281. package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +0 -721
  282. package/renderer/components/docs-viewer/agent/messages/types.ts +0 -61
  283. package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +0 -24
  284. package/renderer/components/docs-viewer/agent/messages/user-message.tsx +0 -51
  285. package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +0 -1283
  286. package/renderer/components/docs-viewer/content/changelog-page.tsx +0 -331
  287. package/renderer/components/docs-viewer/content/doc-page.tsx +0 -367
  288. package/renderer/components/docs-viewer/content/documentation-viewer.tsx +0 -17
  289. package/renderer/components/docs-viewer/content/index.tsx +0 -29
  290. package/renderer/components/docs-viewer/content/not-found-page.tsx +0 -330
  291. package/renderer/components/docs-viewer/content/request-details.tsx +0 -330
  292. package/renderer/components/docs-viewer/content/sections/auth.tsx +0 -69
  293. package/renderer/components/docs-viewer/content/sections/body.tsx +0 -66
  294. package/renderer/components/docs-viewer/content/sections/headers.tsx +0 -43
  295. package/renderer/components/docs-viewer/content/sections/overview.tsx +0 -40
  296. package/renderer/components/docs-viewer/content/sections/parameters.tsx +0 -43
  297. package/renderer/components/docs-viewer/content/sections/responses.tsx +0 -87
  298. package/renderer/components/docs-viewer/global-auth-modal.tsx +0 -352
  299. package/renderer/components/docs-viewer/index.tsx +0 -1662
  300. package/renderer/components/docs-viewer/playground/auth-editor.tsx +0 -280
  301. package/renderer/components/docs-viewer/playground/body-editor.tsx +0 -221
  302. package/renderer/components/docs-viewer/playground/code-editor.tsx +0 -224
  303. package/renderer/components/docs-viewer/playground/code-snippet.tsx +0 -387
  304. package/renderer/components/docs-viewer/playground/graphql-playground.tsx +0 -745
  305. package/renderer/components/docs-viewer/playground/index.tsx +0 -671
  306. package/renderer/components/docs-viewer/playground/key-value-editor.tsx +0 -261
  307. package/renderer/components/docs-viewer/playground/method-selector.tsx +0 -60
  308. package/renderer/components/docs-viewer/playground/request-builder.tsx +0 -179
  309. package/renderer/components/docs-viewer/playground/request-tabs.tsx +0 -237
  310. package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +0 -21
  311. package/renderer/components/docs-viewer/playground/response-cards/index.tsx +0 -93
  312. package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +0 -16
  313. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +0 -23
  314. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +0 -268
  315. package/renderer/components/docs-viewer/playground/response-cards/types.ts +0 -82
  316. package/renderer/components/docs-viewer/playground/response-viewer.tsx +0 -43
  317. package/renderer/components/docs-viewer/search/index.ts +0 -2
  318. package/renderer/components/docs-viewer/search/search-dialog.tsx +0 -331
  319. package/renderer/components/docs-viewer/search/use-search.ts +0 -117
  320. package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +0 -431
  321. package/renderer/components/docs-viewer/shared/method-badge.tsx +0 -41
  322. package/renderer/components/docs-viewer/shared/schema-viewer.tsx +0 -349
  323. package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +0 -259
  324. package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +0 -316
  325. package/renderer/components/docs-viewer/sidebar/index.tsx +0 -282
  326. package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +0 -202
  327. package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +0 -118
  328. package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +0 -212
  329. package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +0 -38
  330. package/renderer/components/theme-provider.tsx +0 -11
  331. package/renderer/components/theme-toggle.tsx +0 -76
  332. package/renderer/components/ui/badge.tsx +0 -46
  333. package/renderer/components/ui/button.tsx +0 -59
  334. package/renderer/components/ui/dialog.tsx +0 -118
  335. package/renderer/components/ui/dropdown-menu.tsx +0 -257
  336. package/renderer/components/ui/input.tsx +0 -21
  337. package/renderer/components/ui/label.tsx +0 -24
  338. package/renderer/components/ui/navigation-menu.tsx +0 -168
  339. package/renderer/components/ui/select.tsx +0 -190
  340. package/renderer/components/ui/spinner.tsx +0 -114
  341. package/renderer/components/ui/tabs.tsx +0 -66
  342. package/renderer/components/ui/tooltip.tsx +0 -61
  343. package/renderer/hooks/use-code-copy.ts +0 -88
  344. package/renderer/hooks/use-openapi-title.ts +0 -44
  345. package/renderer/lib/api-docs/agent/index.ts +0 -6
  346. package/renderer/lib/api-docs/agent/indexer.ts +0 -323
  347. package/renderer/lib/api-docs/agent/spec-summary.ts +0 -335
  348. package/renderer/lib/api-docs/agent/types.ts +0 -116
  349. package/renderer/lib/api-docs/auth/auth-context.tsx +0 -225
  350. package/renderer/lib/api-docs/auth/auth-storage.ts +0 -87
  351. package/renderer/lib/api-docs/auth/crypto.ts +0 -89
  352. package/renderer/lib/api-docs/auth/index.ts +0 -4
  353. package/renderer/lib/api-docs/code-editor/db.ts +0 -164
  354. package/renderer/lib/api-docs/code-editor/hooks.ts +0 -266
  355. package/renderer/lib/api-docs/code-editor/mode-context.tsx +0 -207
  356. package/renderer/lib/api-docs/code-editor/types.ts +0 -105
  357. package/renderer/lib/api-docs/codegen/definitions.ts +0 -297
  358. package/renderer/lib/api-docs/codegen/har.ts +0 -251
  359. package/renderer/lib/api-docs/codegen/index.ts +0 -159
  360. package/renderer/lib/api-docs/factories.ts +0 -170
  361. package/renderer/lib/api-docs/mobile-context.tsx +0 -112
  362. package/renderer/lib/api-docs/navigation-context.tsx +0 -88
  363. package/renderer/lib/api-docs/parsers/graphql/README.md +0 -129
  364. package/renderer/lib/api-docs/parsers/graphql/index.ts +0 -91
  365. package/renderer/lib/api-docs/parsers/graphql/parser.ts +0 -491
  366. package/renderer/lib/api-docs/parsers/graphql/transformer.ts +0 -246
  367. package/renderer/lib/api-docs/parsers/graphql/types.ts +0 -283
  368. package/renderer/lib/api-docs/parsers/openapi/README.md +0 -32
  369. package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +0 -60
  370. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +0 -574
  371. package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +0 -403
  372. package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +0 -232
  373. package/renderer/lib/api-docs/parsers/openapi/index.ts +0 -171
  374. package/renderer/lib/api-docs/parsers/openapi/transformer.ts +0 -278
  375. package/renderer/lib/api-docs/parsers/openapi/validator.ts +0 -31
  376. package/renderer/lib/api-docs/playground/context.tsx +0 -107
  377. package/renderer/lib/api-docs/playground/navigation-context.tsx +0 -124
  378. package/renderer/lib/api-docs/playground/request-builder.ts +0 -223
  379. package/renderer/lib/api-docs/playground/request-runner.ts +0 -282
  380. package/renderer/lib/api-docs/playground/types.ts +0 -35
  381. package/renderer/lib/api-docs/types.ts +0 -269
  382. package/renderer/lib/api-docs/utils.ts +0 -311
  383. package/renderer/lib/cache.ts +0 -193
  384. package/renderer/lib/docs/config/domain-schema.ts +0 -260
  385. package/renderer/lib/docs/config/index.ts +0 -43
  386. package/renderer/lib/docs/config/loader.ts +0 -142
  387. package/renderer/lib/docs/config/schema.ts +0 -308
  388. package/renderer/lib/docs/index.ts +0 -12
  389. package/renderer/lib/docs/mdx/compiler.ts +0 -176
  390. package/renderer/lib/docs/mdx/frontmatter.ts +0 -91
  391. package/renderer/lib/docs/mdx/index.ts +0 -26
  392. package/renderer/lib/docs/navigation/generator.ts +0 -348
  393. package/renderer/lib/docs/navigation/index.ts +0 -12
  394. package/renderer/lib/docs/navigation/types.ts +0 -123
  395. package/renderer/lib/docs-navigation-context.tsx +0 -80
  396. package/renderer/lib/multi-tenant/context.ts +0 -105
  397. package/renderer/lib/storage/blob.ts +0 -1083
  398. package/renderer/lib/utils/icons.ts +0 -48
  399. package/renderer/lib/utils.ts +0 -6
  400. package/renderer/next.config.ts +0 -76
@@ -1,170 +0,0 @@
1
- /**
2
- * Factory Functions for Brainfish API Documentation
3
- *
4
- * Creates instances of BrainfishCollection and BrainfishRESTRequest
5
- * with proper defaults and unique IDs.
6
- */
7
-
8
- import type {
9
- BrainfishCollection,
10
- BrainfishRESTRequest,
11
- } from './types'
12
-
13
- /**
14
- * Generates a URL-friendly slug from a string
15
- * Converts to lowercase, replaces spaces and special chars with hyphens
16
- */
17
- function slugify(str: string): string {
18
- return str
19
- .toLowerCase()
20
- .replace(/[{}]/g, '') // Remove braces from path params
21
- .replace(/[^a-z0-9]+/g, '-') // Replace non-alphanumeric with hyphens
22
- .replace(/^-+|-+$/g, '') // Remove leading/trailing hyphens
23
- .replace(/-+/g, '-') // Collapse multiple hyphens
24
- }
25
-
26
- /**
27
- * Generates a human-readable, deterministic ID for requests
28
- * Uses operationId if available, otherwise method + path
29
- */
30
- function generateRequestId(method: string, path: string, operationId?: string): string {
31
- if (operationId) {
32
- // Use operationId directly (it's already unique per spec)
33
- return slugify(operationId)
34
- }
35
-
36
- // Generate from method + path: "get-users-id" for "GET /users/{id}"
37
- const pathSlug = slugify(path)
38
- return `${method.toLowerCase()}-${pathSlug}`
39
- }
40
-
41
- /**
42
- * Generates a unique ID for collections
43
- * If a seed is provided, generates a deterministic slug-based ID
44
- */
45
- function generateCollectionId(name?: string): string {
46
- if (name) {
47
- return `coll-${slugify(name)}`
48
- }
49
- return `coll_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
50
- }
51
-
52
- /**
53
- * Creates a BrainfishRESTRequest with defaults
54
- * Generates human-readable, deterministic IDs based on operationId or method+path
55
- */
56
- export function makeBrainfishRESTRequest(
57
- request: Omit<BrainfishRESTRequest, 'id'> & { operationId?: string }
58
- ): BrainfishRESTRequest {
59
- // Extract path from endpoint (remove base URL)
60
- const path = request.endpoint
61
- ? request.endpoint.replace(/^https?:\/\/[^/]+/, '') || '/'
62
- : '/'
63
-
64
- // Generate human-readable ID
65
- const id = generateRequestId(request.method || 'GET', path, request.operationId)
66
-
67
- return {
68
- id,
69
- name: request.name || 'Untitled Request',
70
- description: request.description ?? null,
71
- method: request.method || 'GET',
72
- endpoint: request.endpoint || '',
73
- params: request.params || [],
74
- headers: request.headers || [],
75
- auth: request.auth || { authType: 'none', authActive: true },
76
- body: request.body || { contentType: null, body: null },
77
- requestVariables: request.requestVariables || [],
78
- responses: request.responses || {},
79
- tags: request.tags || [],
80
- }
81
- }
82
-
83
- /**
84
- * Creates a BrainfishCollection with defaults
85
- * If name is provided, generates a deterministic ID
86
- */
87
- export function makeBrainfishCollection(
88
- collection: Omit<BrainfishCollection, 'id'>
89
- ): BrainfishCollection {
90
- return {
91
- id: generateCollectionId(collection.name),
92
- name: collection.name || 'Untitled Collection',
93
- description: collection.description ?? null,
94
- folders: collection.folders || [],
95
- requests: collection.requests || [],
96
- variables: collection.variables || [],
97
- auth: collection.auth || { authType: 'inherit', authActive: true },
98
- headers: collection.headers || [],
99
- }
100
- }
101
-
102
- /**
103
- * Creates a default BrainfishRESTRequest
104
- */
105
- export function getDefaultBrainfishRESTRequest(): BrainfishRESTRequest {
106
- return makeBrainfishRESTRequest({
107
- name: 'Untitled Request',
108
- description: null,
109
- method: 'GET',
110
- endpoint: '',
111
- params: [],
112
- headers: [],
113
- auth: {
114
- authType: 'none',
115
- authActive: true,
116
- },
117
- body: {
118
- contentType: null,
119
- body: null,
120
- },
121
- requestVariables: [],
122
- responses: {},
123
- tags: [],
124
- })
125
- }
126
-
127
- /**
128
- * Creates a default BrainfishCollection
129
- */
130
- export function getDefaultBrainfishCollection(): BrainfishCollection {
131
- return makeBrainfishCollection({
132
- name: 'Untitled Collection',
133
- description: null,
134
- folders: [],
135
- requests: [],
136
- variables: [],
137
- auth: {
138
- authType: 'inherit',
139
- authActive: true,
140
- },
141
- headers: [],
142
- })
143
- }
144
-
145
- /**
146
- * Creates a BrainfishRESTResponseOriginalRequest
147
- */
148
- export function makeBrainfishRESTResponseOriginalRequest(
149
- request: {
150
- name: string
151
- method: BrainfishRESTRequest['method']
152
- endpoint: string
153
- params: BrainfishRESTRequest['params']
154
- headers: BrainfishRESTRequest['headers']
155
- body: BrainfishRESTRequest['body']
156
- auth: BrainfishRESTRequest['auth']
157
- requestVariables: BrainfishRESTRequest['requestVariables']
158
- }
159
- ) {
160
- return {
161
- name: request.name,
162
- method: request.method,
163
- endpoint: request.endpoint,
164
- params: request.params,
165
- headers: request.headers,
166
- body: request.body,
167
- auth: request.auth,
168
- requestVariables: request.requestVariables,
169
- }
170
- }
@@ -1,112 +0,0 @@
1
- 'use client'
2
-
3
- import { createContext, useContext, useState, useCallback, useEffect, type ReactNode } from 'react'
4
-
5
- interface MobileContextValue {
6
- // Sidebar visibility
7
- isLeftSidebarOpen: boolean
8
- isRightSidebarOpen: boolean
9
- // Toggle functions
10
- toggleLeftSidebar: () => void
11
- toggleRightSidebar: () => void
12
- openLeftSidebar: () => void
13
- closeLeftSidebar: () => void
14
- openRightSidebar: () => void
15
- closeRightSidebar: () => void
16
- // Close all sidebars (useful when navigating)
17
- closeAllSidebars: () => void
18
- // Mobile detection
19
- isMobile: boolean
20
- }
21
-
22
- const MobileContext = createContext<MobileContextValue | null>(null)
23
-
24
- export function MobileProvider({ children }: { children: ReactNode }) {
25
- const [isLeftSidebarOpen, setIsLeftSidebarOpen] = useState(false)
26
- const [isRightSidebarOpen, setIsRightSidebarOpen] = useState(false)
27
- const [isMobile, setIsMobile] = useState(false)
28
-
29
- // Detect mobile on mount and window resize
30
- useEffect(() => {
31
- const checkMobile = () => {
32
- setIsMobile(window.innerWidth < 1024) // lg breakpoint
33
- }
34
-
35
- // Initial check
36
- checkMobile()
37
-
38
- // Listen for resize
39
- window.addEventListener('resize', checkMobile)
40
- return () => window.removeEventListener('resize', checkMobile)
41
- }, [])
42
-
43
- // Close sidebars when switching to desktop
44
- useEffect(() => {
45
- if (!isMobile) {
46
- setIsLeftSidebarOpen(false)
47
- setIsRightSidebarOpen(false)
48
- }
49
- }, [isMobile])
50
-
51
- const toggleLeftSidebar = useCallback(() => {
52
- setIsLeftSidebarOpen(prev => !prev)
53
- // Close right sidebar when opening left
54
- setIsRightSidebarOpen(false)
55
- }, [])
56
-
57
- const toggleRightSidebar = useCallback(() => {
58
- setIsRightSidebarOpen(prev => !prev)
59
- // Close left sidebar when opening right
60
- setIsLeftSidebarOpen(false)
61
- }, [])
62
-
63
- const openLeftSidebar = useCallback(() => {
64
- setIsLeftSidebarOpen(true)
65
- setIsRightSidebarOpen(false)
66
- }, [])
67
-
68
- const closeLeftSidebar = useCallback(() => {
69
- setIsLeftSidebarOpen(false)
70
- }, [])
71
-
72
- const openRightSidebar = useCallback(() => {
73
- setIsRightSidebarOpen(true)
74
- setIsLeftSidebarOpen(false)
75
- }, [])
76
-
77
- const closeRightSidebar = useCallback(() => {
78
- setIsRightSidebarOpen(false)
79
- }, [])
80
-
81
- const closeAllSidebars = useCallback(() => {
82
- setIsLeftSidebarOpen(false)
83
- setIsRightSidebarOpen(false)
84
- }, [])
85
-
86
- return (
87
- <MobileContext.Provider
88
- value={{
89
- isLeftSidebarOpen,
90
- isRightSidebarOpen,
91
- toggleLeftSidebar,
92
- toggleRightSidebar,
93
- openLeftSidebar,
94
- closeLeftSidebar,
95
- openRightSidebar,
96
- closeRightSidebar,
97
- closeAllSidebars,
98
- isMobile,
99
- }}
100
- >
101
- {children}
102
- </MobileContext.Provider>
103
- )
104
- }
105
-
106
- export function useMobile() {
107
- const context = useContext(MobileContext)
108
- if (!context) {
109
- throw new Error('useMobile must be used within a MobileProvider')
110
- }
111
- return context
112
- }
@@ -1,88 +0,0 @@
1
- 'use client'
2
-
3
- import { createContext, useContext, useCallback, type ReactNode } from 'react'
4
- import type { BrainfishCollection, BrainfishRESTRequest } from './types'
5
-
6
- interface NavigationContextValue {
7
- /** Navigate to an endpoint by operationId or ID */
8
- navigateToEndpoint: (operationIdOrId: string) => void
9
- /** Current collection */
10
- collection: BrainfishCollection | null
11
- }
12
-
13
- const NavigationContext = createContext<NavigationContextValue | null>(null)
14
-
15
- interface NavigationProviderProps {
16
- children: ReactNode
17
- collection: BrainfishCollection | null
18
- onSelectRequest: (request: BrainfishRESTRequest) => void
19
- }
20
-
21
- /**
22
- * Helper to find request by operationId (name) or ID in collection
23
- */
24
- function findRequestByOperationIdOrId(
25
- collection: BrainfishCollection,
26
- operationIdOrId: string
27
- ): BrainfishRESTRequest | null {
28
- // Normalize the search term (handle both snake_case and the formatted name)
29
- const normalizedSearch = operationIdOrId.toLowerCase().replace(/[\s-]/g, '_')
30
-
31
- // Check direct requests
32
- for (const request of collection.requests) {
33
- // Check by ID
34
- if (request.id === operationIdOrId) return request
35
- // Check by name (operationId) - exact match
36
- if (request.name.toLowerCase().replace(/[\s-]/g, '_') === normalizedSearch) return request
37
- // Check by name - partial match (for formatted names like "Post Carts" -> "post_carts")
38
- const requestNameNormalized = request.name.toLowerCase().replace(/[\s-]/g, '_')
39
- if (requestNameNormalized === normalizedSearch) return request
40
- }
41
-
42
- // Check folders recursively
43
- for (const folder of collection.folders) {
44
- const request = findRequestByOperationIdOrId(folder, operationIdOrId)
45
- if (request) return request
46
- }
47
-
48
- return null
49
- }
50
-
51
- export function NavigationProvider({
52
- children,
53
- collection,
54
- onSelectRequest
55
- }: NavigationProviderProps) {
56
- const navigateToEndpoint = useCallback((operationIdOrId: string) => {
57
- if (!collection) {
58
- console.warn('[Navigation] No collection available')
59
- return
60
- }
61
-
62
- const request = findRequestByOperationIdOrId(collection, operationIdOrId)
63
- if (request) {
64
- console.log('[Navigation] Navigating to endpoint:', request.name)
65
- onSelectRequest(request)
66
- } else {
67
- console.warn('[Navigation] Endpoint not found:', operationIdOrId)
68
- }
69
- }, [collection, onSelectRequest])
70
-
71
- return (
72
- <NavigationContext.Provider value={{ navigateToEndpoint, collection }}>
73
- {children}
74
- </NavigationContext.Provider>
75
- )
76
- }
77
-
78
- export function useNavigation() {
79
- const context = useContext(NavigationContext)
80
- if (!context) {
81
- // Return a no-op function if not in provider (for backwards compatibility)
82
- return {
83
- navigateToEndpoint: () => {},
84
- collection: null
85
- }
86
- }
87
- return context
88
- }
@@ -1,129 +0,0 @@
1
- # GraphQL Parser
2
-
3
- This directory contains the GraphQL schema parsing logic for Brainfish API Docs.
4
-
5
- ## Structure
6
-
7
- - `types.ts` - TypeScript types for GraphQL schema representation
8
- - `parser.ts` - GraphQL SDL parsing using graphql-js
9
- - `transformer.ts` - Convert GraphQL schema to BrainfishCollection
10
- - `index.ts` - Main entry point and exports
11
-
12
- ## Dependencies Required
13
-
14
- ```bash
15
- npm install graphql
16
- ```
17
-
18
- ## Usage
19
-
20
- ### Parse GraphQL Schema
21
-
22
- ```typescript
23
- import { importGraphQLSchema } from '@/lib/api-docs/parsers/graphql'
24
-
25
- // Parse SDL string
26
- const collection = await importGraphQLSchema(sdlString, {
27
- name: 'My GraphQL API',
28
- endpoint: 'https://api.example.com/graphql',
29
- })
30
- ```
31
-
32
- ### Get Full Schema Information
33
-
34
- ```typescript
35
- import { importGraphQLSchemaFull } from '@/lib/api-docs/parsers/graphql'
36
-
37
- const graphqlCollection = await importGraphQLSchemaFull(sdlString, {
38
- name: 'My GraphQL API',
39
- endpoint: 'https://api.example.com/graphql',
40
- })
41
-
42
- // Access queries, mutations, subscriptions, and types
43
- console.log(graphqlCollection.queries)
44
- console.log(graphqlCollection.mutations)
45
- console.log(graphqlCollection.types)
46
- ```
47
-
48
- ### Parse Schema Only
49
-
50
- ```typescript
51
- import { parseGraphQL } from '@/lib/api-docs/parsers/graphql'
52
-
53
- const schema = await parseGraphQL(sdlString)
54
-
55
- // Access schema information
56
- console.log(schema.info)
57
- console.log(schema.types)
58
- console.log(schema.queries)
59
- ```
60
-
61
- ## Configuration in docs.json
62
-
63
- Add a GraphQL tab to your navigation:
64
-
65
- ```json
66
- {
67
- "navigation": {
68
- "tabs": [
69
- {
70
- "tab": "GraphQL API",
71
- "type": "graphql",
72
- "path": "/graphql",
73
- "schema": "api-reference/schema.graphql",
74
- "endpoint": "https://api.example.com/graphql"
75
- }
76
- ]
77
- }
78
- }
79
- ```
80
-
81
- ### Multiple Schemas
82
-
83
- ```json
84
- {
85
- "navigation": {
86
- "tabs": [
87
- {
88
- "tab": "GraphQL API",
89
- "type": "graphql",
90
- "path": "/graphql",
91
- "schemas": [
92
- {
93
- "name": "Public API",
94
- "schema": "api-reference/public.graphql",
95
- "endpoint": "https://api.example.com/graphql",
96
- "default": true
97
- },
98
- {
99
- "name": "Admin API",
100
- "schema": "api-reference/admin.graphql",
101
- "endpoint": "https://admin.example.com/graphql"
102
- }
103
- ]
104
- }
105
- ]
106
- }
107
- }
108
- ```
109
-
110
- ## Features
111
-
112
- - **SDL Parsing**: Parse GraphQL Schema Definition Language files
113
- - **Introspection**: Support for introspection query results (planned)
114
- - **Type Explorer**: View all types, inputs, enums, interfaces, unions
115
- - **Operation Playground**: Test queries, mutations, and subscriptions
116
- - **Variable Support**: Auto-generate example variables from schema
117
- - **Documentation**: Extract descriptions from schema for docs
118
-
119
- ## Architecture
120
-
121
- The GraphQL parser follows the same pattern as the OpenAPI parser:
122
-
123
- 1. **Parse**: Read SDL or introspection result
124
- 2. **Validate**: Ensure schema is valid GraphQL
125
- 3. **Transform**: Convert to internal types
126
- 4. **Export**: Generate BrainfishCollection for UI
127
-
128
- This allows GraphQL APIs to use the same documentation UI as REST APIs,
129
- with GraphQL-specific enhancements for the schema explorer and playground.
@@ -1,91 +0,0 @@
1
- /**
2
- * GraphQL Parser Module
3
- *
4
- * Main entry point for GraphQL schema parsing and transformation.
5
- */
6
-
7
- export * from './types'
8
- export * from './parser'
9
- export * from './transformer'
10
-
11
- import { parseGraphQLSchema, validateGraphQLSchema } from './parser'
12
- import { convertGraphQLToBrainfishCollection, convertGraphQLToCollection } from './transformer'
13
- import type { BrainfishCollection } from '../../types'
14
- import type { BrainfishGraphQLCollection, GraphQLSchema } from './types'
15
-
16
- export const GRAPHQL_INVALID_SCHEMA = 'graphql/invalid_schema' as const
17
-
18
- /**
19
- * Import a GraphQL schema from SDL string or file content
20
- * Returns a BrainfishCollection for integration with existing UI
21
- */
22
- export async function importGraphQLSchema(
23
- input: string,
24
- options: {
25
- name?: string
26
- endpoint?: string
27
- description?: string
28
- } = {}
29
- ): Promise<BrainfishCollection> {
30
- const {
31
- name = 'GraphQL API',
32
- endpoint = '/graphql',
33
- description,
34
- } = options
35
-
36
- // Validate the schema
37
- const validation = validateGraphQLSchema(input)
38
- if (!validation.valid) {
39
- throw new Error(`${GRAPHQL_INVALID_SCHEMA}: ${validation.error}`)
40
- }
41
-
42
- // Parse the schema
43
- const schema = parseGraphQLSchema(input)
44
-
45
- // Convert to BrainfishCollection
46
- return convertGraphQLToBrainfishCollection(schema, name, endpoint, description)
47
- }
48
-
49
- /**
50
- * Import a GraphQL schema and return the full GraphQL collection
51
- * with schema information preserved
52
- */
53
- export async function importGraphQLSchemaFull(
54
- input: string,
55
- options: {
56
- name?: string
57
- endpoint?: string
58
- description?: string
59
- } = {}
60
- ): Promise<BrainfishGraphQLCollection> {
61
- const {
62
- name = 'GraphQL API',
63
- endpoint = '/graphql',
64
- description,
65
- } = options
66
-
67
- // Validate the schema
68
- const validation = validateGraphQLSchema(input)
69
- if (!validation.valid) {
70
- throw new Error(`${GRAPHQL_INVALID_SCHEMA}: ${validation.error}`)
71
- }
72
-
73
- // Parse the schema
74
- const schema = parseGraphQLSchema(input)
75
-
76
- // Convert to full GraphQL collection
77
- return convertGraphQLToCollection(schema, name, endpoint, description)
78
- }
79
-
80
- /**
81
- * Parse GraphQL schema without converting to collection
82
- * Useful for schema exploration and type information
83
- */
84
- export async function parseGraphQL(input: string): Promise<GraphQLSchema> {
85
- const validation = validateGraphQLSchema(input)
86
- if (!validation.valid) {
87
- throw new Error(`${GRAPHQL_INVALID_SCHEMA}: ${validation.error}`)
88
- }
89
-
90
- return parseGraphQLSchema(input)
91
- }