@brainfish-ai/devdoc 0.1.42 → 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 (388) hide show
  1. package/dist/cli/commands/dev.js +19 -10
  2. package/package.json +3 -2
  3. package/renderer/app/api/assets/[...path]/route.js +108 -0
  4. package/renderer/app/api/assets/route.js +114 -0
  5. package/renderer/app/api/assets/upload/route.js +163 -0
  6. package/renderer/app/api/auth-schemes/route.js +58 -0
  7. package/renderer/app/api/chat/route.js +759 -0
  8. package/renderer/app/api/codegen/route.js +52 -0
  9. package/renderer/app/api/collections/route.js +675 -0
  10. package/renderer/app/api/debug/route.js +47 -0
  11. package/renderer/app/api/deploy/route.js +199 -0
  12. package/renderer/app/api/device/route.js +36 -0
  13. package/renderer/app/api/docs/route.js +205 -0
  14. package/renderer/app/api/domains/add/route.js +121 -0
  15. package/renderer/app/api/domains/lookup/route.js +43 -0
  16. package/renderer/app/api/domains/remove/route.js +89 -0
  17. package/renderer/app/api/domains/status/route.js +140 -0
  18. package/renderer/app/api/domains/verify/route.js +168 -0
  19. package/renderer/app/api/keys/regenerate/route.js +71 -0
  20. package/renderer/app/api/local-assets/[...path]/route.js +108 -0
  21. package/renderer/app/api/openapi-spec/route.js +73 -0
  22. package/renderer/app/api/projects/[slug]/route.js +129 -0
  23. package/renderer/app/api/projects/[slug]/stats/route.js +80 -0
  24. package/renderer/app/api/projects/register/route.js +176 -0
  25. package/renderer/app/api/proxy/route.js +139 -0
  26. package/renderer/app/api/proxy-stream/route.js +156 -0
  27. package/renderer/app/api/redirects/route.js +35 -0
  28. package/renderer/app/api/schema/route.js +85 -0
  29. package/renderer/app/api/subdomains/check/route.js +158 -0
  30. package/renderer/app/api/suggestions/route.js +175 -0
  31. package/renderer/app/layout.js +47 -0
  32. package/renderer/app/llms-full.txt/route.js +257 -0
  33. package/renderer/app/llms.txt/route.js +219 -0
  34. package/renderer/app/page.js +12 -0
  35. package/renderer/app/robots.txt/route.js +66 -0
  36. package/renderer/app/sitemap.xml/route.js +145 -0
  37. package/renderer/components/docs/index.js +8 -0
  38. package/renderer/components/docs/mdx/accordion.js +113 -0
  39. package/renderer/components/docs/mdx/badge.js +72 -0
  40. package/renderer/components/docs/mdx/callouts.js +137 -0
  41. package/renderer/components/docs/mdx/cards.js +175 -0
  42. package/renderer/components/docs/mdx/changelog.js +100 -0
  43. package/renderer/components/docs/mdx/code-block.js +147 -0
  44. package/renderer/components/docs/mdx/code-group.js +287 -0
  45. package/renderer/components/docs/mdx/file-embeds.js +82 -0
  46. package/renderer/components/docs/mdx/frame.js +59 -0
  47. package/renderer/components/docs/mdx/highlight.js +90 -0
  48. package/renderer/components/docs/mdx/iframe.js +69 -0
  49. package/renderer/components/docs/mdx/image.js +135 -0
  50. package/renderer/components/docs/mdx/index.js +134 -0
  51. package/renderer/components/docs/mdx/landing.js +315 -0
  52. package/renderer/components/docs/mdx/mermaid.js +212 -0
  53. package/renderer/components/docs/mdx/param-field.js +112 -0
  54. package/renderer/components/docs/mdx/steps.js +74 -0
  55. package/renderer/components/docs/mdx/tabs.js +50 -0
  56. package/renderer/components/docs/mdx-renderer.js +77 -0
  57. package/renderer/components/docs/navigation/breadcrumbs.js +64 -0
  58. package/renderer/components/docs/navigation/index.js +6 -0
  59. package/renderer/components/docs/navigation/page-nav.js +57 -0
  60. package/renderer/components/docs/navigation/sidebar.js +375 -0
  61. package/renderer/components/docs/navigation/toc.js +89 -0
  62. package/renderer/components/docs/notice.js +77 -0
  63. package/renderer/components/docs-header.js +202 -0
  64. package/renderer/components/docs-viewer/agent/agent-chat.js +1930 -0
  65. package/renderer/components/docs-viewer/agent/cards/debug-context-card.js +107 -0
  66. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.js +57 -0
  67. package/renderer/components/docs-viewer/agent/cards/index.js +45 -0
  68. package/renderer/components/docs-viewer/agent/cards/response-options-card.js +154 -0
  69. package/renderer/components/docs-viewer/agent/cards/types.js +22 -0
  70. package/renderer/components/docs-viewer/agent/chat-message.js +2 -0
  71. package/renderer/components/docs-viewer/agent/index.js +4 -0
  72. package/renderer/components/docs-viewer/agent/messages/assistant-message.js +108 -0
  73. package/renderer/components/docs-viewer/agent/messages/chat-message.js +34 -0
  74. package/renderer/components/docs-viewer/agent/messages/index.js +6 -0
  75. package/renderer/components/docs-viewer/agent/messages/tool-call-display.js +1065 -0
  76. package/renderer/components/docs-viewer/agent/messages/types.js +2 -0
  77. package/renderer/components/docs-viewer/agent/messages/typing-indicator.js +26 -0
  78. package/renderer/components/docs-viewer/agent/messages/user-message.js +37 -0
  79. package/renderer/components/docs-viewer/code-editor/{index.tsx → index.js} +1 -1
  80. package/renderer/components/docs-viewer/code-editor/notes-mode.js +1338 -0
  81. package/renderer/components/docs-viewer/content/changelog-page.js +297 -0
  82. package/renderer/components/docs-viewer/content/doc-page.js +264 -0
  83. package/renderer/components/docs-viewer/content/documentation-viewer.js +14 -0
  84. package/renderer/components/docs-viewer/content/index.js +29 -0
  85. package/renderer/components/docs-viewer/content/not-found-page.js +300 -0
  86. package/renderer/components/docs-viewer/content/request-details.js +528 -0
  87. package/renderer/components/docs-viewer/content/sections/auth.js +108 -0
  88. package/renderer/components/docs-viewer/content/sections/body.js +80 -0
  89. package/renderer/components/docs-viewer/content/sections/headers.js +64 -0
  90. package/renderer/components/docs-viewer/content/sections/overview.js +56 -0
  91. package/renderer/components/docs-viewer/content/sections/parameters.js +64 -0
  92. package/renderer/components/docs-viewer/content/sections/responses.js +91 -0
  93. package/renderer/components/docs-viewer/global-auth-modal.js +427 -0
  94. package/renderer/components/docs-viewer/index.js +1552 -0
  95. package/renderer/components/docs-viewer/playground/auth-editor.js +418 -0
  96. package/renderer/components/docs-viewer/playground/body-editor.js +240 -0
  97. package/renderer/components/docs-viewer/playground/code-editor.js +135 -0
  98. package/renderer/components/docs-viewer/playground/code-snippet.js +393 -0
  99. package/renderer/components/docs-viewer/playground/graphql-playground.js +734 -0
  100. package/renderer/components/docs-viewer/playground/index.js +682 -0
  101. package/renderer/components/docs-viewer/playground/key-value-editor.js +317 -0
  102. package/renderer/components/docs-viewer/playground/method-selector.js +65 -0
  103. package/renderer/components/docs-viewer/playground/request-builder.js +181 -0
  104. package/renderer/components/docs-viewer/playground/request-tabs.js +240 -0
  105. package/renderer/components/docs-viewer/playground/response-cards/idle-card.js +42 -0
  106. package/renderer/components/docs-viewer/playground/response-cards/index.js +72 -0
  107. package/renderer/components/docs-viewer/playground/response-cards/loading-card.js +24 -0
  108. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.js +28 -0
  109. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.js +308 -0
  110. package/renderer/components/docs-viewer/playground/response-cards/types.js +9 -0
  111. package/renderer/components/docs-viewer/playground/response-viewer.js +18 -0
  112. package/renderer/components/docs-viewer/search/index.js +2 -0
  113. package/renderer/components/docs-viewer/search/search-dialog.js +367 -0
  114. package/renderer/components/docs-viewer/search/use-search.js +89 -0
  115. package/renderer/components/docs-viewer/shared/markdown-renderer.js +423 -0
  116. package/renderer/components/docs-viewer/shared/method-badge.js +23 -0
  117. package/renderer/components/docs-viewer/shared/schema-viewer.js +321 -0
  118. package/renderer/components/docs-viewer/sidebar/collection-tree.js +222 -0
  119. package/renderer/components/docs-viewer/sidebar/endpoint-options.js +512 -0
  120. package/renderer/components/docs-viewer/sidebar/index.js +196 -0
  121. package/renderer/components/docs-viewer/sidebar/right-sidebar.js +163 -0
  122. package/renderer/components/docs-viewer/sidebar/sidebar-group.js +87 -0
  123. package/renderer/components/docs-viewer/sidebar/sidebar-item.js +172 -0
  124. package/renderer/components/docs-viewer/sidebar/sidebar-section.js +31 -0
  125. package/renderer/components/theme-provider.js +10 -0
  126. package/renderer/components/theme-toggle.js +106 -0
  127. package/renderer/components/ui/badge.js +29 -0
  128. package/renderer/components/ui/button.js +40 -0
  129. package/renderer/components/ui/dialog.js +50 -0
  130. package/renderer/components/ui/dropdown-menu.js +143 -0
  131. package/renderer/components/ui/input.js +12 -0
  132. package/renderer/components/ui/label.js +13 -0
  133. package/renderer/components/ui/navigation-menu.js +83 -0
  134. package/renderer/components/ui/select.js +116 -0
  135. package/renderer/components/ui/spinner.js +92 -0
  136. package/renderer/components/ui/tabs.js +34 -0
  137. package/renderer/components/ui/tooltip.js +43 -0
  138. package/renderer/hooks/use-code-copy.js +76 -0
  139. package/renderer/hooks/use-openapi-title.js +33 -0
  140. package/renderer/lib/api-docs/agent/index.js +4 -0
  141. package/renderer/lib/api-docs/agent/indexer.js +254 -0
  142. package/renderer/lib/api-docs/agent/spec-summary.js +227 -0
  143. package/renderer/lib/api-docs/agent/types.js +5 -0
  144. package/renderer/lib/api-docs/auth/auth-context.js +157 -0
  145. package/renderer/lib/api-docs/auth/auth-storage.js +66 -0
  146. package/renderer/lib/api-docs/auth/crypto.js +64 -0
  147. package/renderer/lib/api-docs/auth/index.js +3 -0
  148. package/renderer/lib/api-docs/code-editor/db.js +145 -0
  149. package/renderer/lib/api-docs/code-editor/hooks.js +254 -0
  150. package/renderer/lib/api-docs/code-editor/{index.ts → index.js} +3 -4
  151. package/renderer/lib/api-docs/code-editor/mode-context.js +154 -0
  152. package/renderer/lib/api-docs/code-editor/types.js +53 -0
  153. package/renderer/lib/api-docs/codegen/definitions.js +258 -0
  154. package/renderer/lib/api-docs/codegen/har.js +171 -0
  155. package/renderer/lib/api-docs/codegen/index.js +118 -0
  156. package/renderer/lib/api-docs/factories.js +136 -0
  157. package/renderer/lib/api-docs/{index.ts → index.js} +5 -10
  158. package/renderer/lib/api-docs/mobile-context.js +79 -0
  159. package/renderer/lib/api-docs/navigation-context.js +62 -0
  160. package/renderer/lib/api-docs/parsers/graphql/index.js +50 -0
  161. package/renderer/lib/api-docs/parsers/graphql/parser.js +350 -0
  162. package/renderer/lib/api-docs/parsers/graphql/transformer.js +215 -0
  163. package/renderer/lib/api-docs/parsers/graphql/types.js +46 -0
  164. package/renderer/lib/api-docs/parsers/openapi/dereferencer.js +43 -0
  165. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.js +486 -0
  166. package/renderer/lib/api-docs/parsers/openapi/extractors/body.js +295 -0
  167. package/renderer/lib/api-docs/parsers/openapi/extractors/index.js +132 -0
  168. package/renderer/lib/api-docs/parsers/openapi/index.js +127 -0
  169. package/renderer/lib/api-docs/parsers/openapi/transformer.js +192 -0
  170. package/renderer/lib/api-docs/parsers/openapi/validator.js +24 -0
  171. package/renderer/lib/api-docs/playground/context.js +65 -0
  172. package/renderer/lib/api-docs/playground/navigation-context.js +74 -0
  173. package/renderer/lib/api-docs/playground/request-builder.js +163 -0
  174. package/renderer/lib/api-docs/playground/request-runner.js +224 -0
  175. package/renderer/lib/api-docs/playground/types.js +5 -0
  176. package/renderer/lib/api-docs/types.js +23 -0
  177. package/renderer/lib/api-docs/utils.js +212 -0
  178. package/renderer/lib/cache.js +157 -0
  179. package/renderer/lib/docs/config/domain-schema.js +161 -0
  180. package/renderer/lib/docs/config/index.js +5 -0
  181. package/renderer/lib/docs/config/loader.js +113 -0
  182. package/renderer/lib/docs/config/schema.js +269 -0
  183. package/renderer/lib/docs/index.js +8 -0
  184. package/renderer/lib/docs/mdx/compiler.js +128 -0
  185. package/renderer/lib/docs/mdx/frontmatter.js +73 -0
  186. package/renderer/lib/docs/mdx/index.js +8 -0
  187. package/renderer/lib/docs/navigation/generator.js +269 -0
  188. package/renderer/lib/docs/navigation/index.js +4 -0
  189. package/renderer/lib/docs/navigation/types.js +9 -0
  190. package/renderer/lib/docs-navigation-context.js +40 -0
  191. package/renderer/lib/multi-tenant/context.js +80 -0
  192. package/renderer/lib/storage/blob.js +767 -0
  193. package/renderer/lib/utils/icons.js +30 -0
  194. package/renderer/lib/utils.js +5 -0
  195. package/renderer/next.config.js +62 -0
  196. package/renderer/tsconfig.json +23 -5
  197. package/renderer/app/api/assets/[...path]/route.ts +0 -123
  198. package/renderer/app/api/assets/route.ts +0 -124
  199. package/renderer/app/api/assets/upload/route.ts +0 -177
  200. package/renderer/app/api/auth-schemes/route.ts +0 -77
  201. package/renderer/app/api/chat/route.ts +0 -858
  202. package/renderer/app/api/codegen/route.ts +0 -72
  203. package/renderer/app/api/collections/route.ts +0 -1002
  204. package/renderer/app/api/debug/route.ts +0 -53
  205. package/renderer/app/api/deploy/route.ts +0 -234
  206. package/renderer/app/api/device/route.ts +0 -42
  207. package/renderer/app/api/docs/route.ts +0 -201
  208. package/renderer/app/api/domains/add/route.ts +0 -132
  209. package/renderer/app/api/domains/lookup/route.ts +0 -43
  210. package/renderer/app/api/domains/remove/route.ts +0 -100
  211. package/renderer/app/api/domains/status/route.ts +0 -158
  212. package/renderer/app/api/domains/verify/route.ts +0 -181
  213. package/renderer/app/api/keys/regenerate/route.ts +0 -80
  214. package/renderer/app/api/local-assets/[...path]/route.ts +0 -122
  215. package/renderer/app/api/openapi-spec/route.ts +0 -151
  216. package/renderer/app/api/projects/[slug]/route.ts +0 -153
  217. package/renderer/app/api/projects/[slug]/stats/route.ts +0 -96
  218. package/renderer/app/api/projects/register/route.ts +0 -152
  219. package/renderer/app/api/proxy/route.ts +0 -149
  220. package/renderer/app/api/proxy-stream/route.ts +0 -168
  221. package/renderer/app/api/redirects/route.ts +0 -47
  222. package/renderer/app/api/schema/route.ts +0 -73
  223. package/renderer/app/api/subdomains/check/route.ts +0 -172
  224. package/renderer/app/api/suggestions/route.ts +0 -144
  225. package/renderer/app/layout.tsx +0 -54
  226. package/renderer/app/llms-full.txt/route.ts +0 -346
  227. package/renderer/app/llms.txt/route.ts +0 -279
  228. package/renderer/app/page.tsx +0 -14
  229. package/renderer/app/robots.txt/route.ts +0 -84
  230. package/renderer/app/sitemap.xml/route.ts +0 -199
  231. package/renderer/components/docs/index.ts +0 -12
  232. package/renderer/components/docs/mdx/accordion.tsx +0 -169
  233. package/renderer/components/docs/mdx/badge.tsx +0 -132
  234. package/renderer/components/docs/mdx/callouts.tsx +0 -154
  235. package/renderer/components/docs/mdx/cards.tsx +0 -241
  236. package/renderer/components/docs/mdx/changelog.tsx +0 -120
  237. package/renderer/components/docs/mdx/code-block.tsx +0 -186
  238. package/renderer/components/docs/mdx/code-group.tsx +0 -421
  239. package/renderer/components/docs/mdx/file-embeds.tsx +0 -105
  240. package/renderer/components/docs/mdx/frame.tsx +0 -112
  241. package/renderer/components/docs/mdx/highlight.tsx +0 -151
  242. package/renderer/components/docs/mdx/iframe.tsx +0 -134
  243. package/renderer/components/docs/mdx/image.tsx +0 -235
  244. package/renderer/components/docs/mdx/index.ts +0 -237
  245. package/renderer/components/docs/mdx/landing.tsx +0 -684
  246. package/renderer/components/docs/mdx/mermaid.tsx +0 -240
  247. package/renderer/components/docs/mdx/param-field.tsx +0 -200
  248. package/renderer/components/docs/mdx/steps.tsx +0 -113
  249. package/renderer/components/docs/mdx/tabs.tsx +0 -86
  250. package/renderer/components/docs/mdx-renderer.tsx +0 -100
  251. package/renderer/components/docs/navigation/breadcrumbs.tsx +0 -76
  252. package/renderer/components/docs/navigation/index.ts +0 -8
  253. package/renderer/components/docs/navigation/page-nav.tsx +0 -64
  254. package/renderer/components/docs/navigation/sidebar.tsx +0 -515
  255. package/renderer/components/docs/navigation/toc.tsx +0 -113
  256. package/renderer/components/docs/notice.tsx +0 -105
  257. package/renderer/components/docs-header.tsx +0 -278
  258. package/renderer/components/docs-viewer/agent/agent-chat.tsx +0 -2076
  259. package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +0 -90
  260. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +0 -49
  261. package/renderer/components/docs-viewer/agent/cards/index.tsx +0 -50
  262. package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +0 -212
  263. package/renderer/components/docs-viewer/agent/cards/types.ts +0 -84
  264. package/renderer/components/docs-viewer/agent/chat-message.tsx +0 -17
  265. package/renderer/components/docs-viewer/agent/index.tsx +0 -6
  266. package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +0 -119
  267. package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +0 -46
  268. package/renderer/components/docs-viewer/agent/messages/index.ts +0 -17
  269. package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +0 -721
  270. package/renderer/components/docs-viewer/agent/messages/types.ts +0 -61
  271. package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +0 -24
  272. package/renderer/components/docs-viewer/agent/messages/user-message.tsx +0 -51
  273. package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +0 -1283
  274. package/renderer/components/docs-viewer/content/changelog-page.tsx +0 -331
  275. package/renderer/components/docs-viewer/content/doc-page.tsx +0 -367
  276. package/renderer/components/docs-viewer/content/documentation-viewer.tsx +0 -17
  277. package/renderer/components/docs-viewer/content/index.tsx +0 -29
  278. package/renderer/components/docs-viewer/content/not-found-page.tsx +0 -330
  279. package/renderer/components/docs-viewer/content/request-details.tsx +0 -330
  280. package/renderer/components/docs-viewer/content/sections/auth.tsx +0 -69
  281. package/renderer/components/docs-viewer/content/sections/body.tsx +0 -66
  282. package/renderer/components/docs-viewer/content/sections/headers.tsx +0 -43
  283. package/renderer/components/docs-viewer/content/sections/overview.tsx +0 -40
  284. package/renderer/components/docs-viewer/content/sections/parameters.tsx +0 -43
  285. package/renderer/components/docs-viewer/content/sections/responses.tsx +0 -87
  286. package/renderer/components/docs-viewer/global-auth-modal.tsx +0 -352
  287. package/renderer/components/docs-viewer/index.tsx +0 -1670
  288. package/renderer/components/docs-viewer/playground/auth-editor.tsx +0 -280
  289. package/renderer/components/docs-viewer/playground/body-editor.tsx +0 -221
  290. package/renderer/components/docs-viewer/playground/code-editor.tsx +0 -224
  291. package/renderer/components/docs-viewer/playground/code-snippet.tsx +0 -387
  292. package/renderer/components/docs-viewer/playground/graphql-playground.tsx +0 -745
  293. package/renderer/components/docs-viewer/playground/index.tsx +0 -671
  294. package/renderer/components/docs-viewer/playground/key-value-editor.tsx +0 -261
  295. package/renderer/components/docs-viewer/playground/method-selector.tsx +0 -60
  296. package/renderer/components/docs-viewer/playground/request-builder.tsx +0 -179
  297. package/renderer/components/docs-viewer/playground/request-tabs.tsx +0 -237
  298. package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +0 -21
  299. package/renderer/components/docs-viewer/playground/response-cards/index.tsx +0 -93
  300. package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +0 -16
  301. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +0 -23
  302. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +0 -268
  303. package/renderer/components/docs-viewer/playground/response-cards/types.ts +0 -82
  304. package/renderer/components/docs-viewer/playground/response-viewer.tsx +0 -43
  305. package/renderer/components/docs-viewer/search/index.ts +0 -2
  306. package/renderer/components/docs-viewer/search/search-dialog.tsx +0 -331
  307. package/renderer/components/docs-viewer/search/use-search.ts +0 -117
  308. package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +0 -431
  309. package/renderer/components/docs-viewer/shared/method-badge.tsx +0 -41
  310. package/renderer/components/docs-viewer/shared/schema-viewer.tsx +0 -349
  311. package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +0 -259
  312. package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +0 -316
  313. package/renderer/components/docs-viewer/sidebar/index.tsx +0 -282
  314. package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +0 -202
  315. package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +0 -118
  316. package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +0 -212
  317. package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +0 -38
  318. package/renderer/components/theme-provider.tsx +0 -11
  319. package/renderer/components/theme-toggle.tsx +0 -76
  320. package/renderer/components/ui/badge.tsx +0 -46
  321. package/renderer/components/ui/button.tsx +0 -59
  322. package/renderer/components/ui/dialog.tsx +0 -118
  323. package/renderer/components/ui/dropdown-menu.tsx +0 -257
  324. package/renderer/components/ui/input.tsx +0 -21
  325. package/renderer/components/ui/label.tsx +0 -24
  326. package/renderer/components/ui/navigation-menu.tsx +0 -168
  327. package/renderer/components/ui/select.tsx +0 -190
  328. package/renderer/components/ui/spinner.tsx +0 -114
  329. package/renderer/components/ui/tabs.tsx +0 -66
  330. package/renderer/components/ui/tooltip.tsx +0 -61
  331. package/renderer/hooks/use-code-copy.ts +0 -88
  332. package/renderer/hooks/use-openapi-title.ts +0 -44
  333. package/renderer/lib/api-docs/agent/index.ts +0 -6
  334. package/renderer/lib/api-docs/agent/indexer.ts +0 -323
  335. package/renderer/lib/api-docs/agent/spec-summary.ts +0 -335
  336. package/renderer/lib/api-docs/agent/types.ts +0 -116
  337. package/renderer/lib/api-docs/auth/auth-context.tsx +0 -225
  338. package/renderer/lib/api-docs/auth/auth-storage.ts +0 -87
  339. package/renderer/lib/api-docs/auth/crypto.ts +0 -89
  340. package/renderer/lib/api-docs/auth/index.ts +0 -4
  341. package/renderer/lib/api-docs/code-editor/db.ts +0 -164
  342. package/renderer/lib/api-docs/code-editor/hooks.ts +0 -266
  343. package/renderer/lib/api-docs/code-editor/mode-context.tsx +0 -207
  344. package/renderer/lib/api-docs/code-editor/types.ts +0 -105
  345. package/renderer/lib/api-docs/codegen/definitions.ts +0 -297
  346. package/renderer/lib/api-docs/codegen/har.ts +0 -251
  347. package/renderer/lib/api-docs/codegen/index.ts +0 -159
  348. package/renderer/lib/api-docs/factories.ts +0 -170
  349. package/renderer/lib/api-docs/mobile-context.tsx +0 -112
  350. package/renderer/lib/api-docs/navigation-context.tsx +0 -88
  351. package/renderer/lib/api-docs/parsers/graphql/README.md +0 -129
  352. package/renderer/lib/api-docs/parsers/graphql/index.ts +0 -91
  353. package/renderer/lib/api-docs/parsers/graphql/parser.ts +0 -491
  354. package/renderer/lib/api-docs/parsers/graphql/transformer.ts +0 -246
  355. package/renderer/lib/api-docs/parsers/graphql/types.ts +0 -283
  356. package/renderer/lib/api-docs/parsers/openapi/README.md +0 -32
  357. package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +0 -60
  358. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +0 -574
  359. package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +0 -403
  360. package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +0 -232
  361. package/renderer/lib/api-docs/parsers/openapi/index.ts +0 -171
  362. package/renderer/lib/api-docs/parsers/openapi/transformer.ts +0 -278
  363. package/renderer/lib/api-docs/parsers/openapi/validator.ts +0 -31
  364. package/renderer/lib/api-docs/playground/context.tsx +0 -107
  365. package/renderer/lib/api-docs/playground/navigation-context.tsx +0 -124
  366. package/renderer/lib/api-docs/playground/request-builder.ts +0 -223
  367. package/renderer/lib/api-docs/playground/request-runner.ts +0 -282
  368. package/renderer/lib/api-docs/playground/types.ts +0 -35
  369. package/renderer/lib/api-docs/types.ts +0 -269
  370. package/renderer/lib/api-docs/utils.ts +0 -311
  371. package/renderer/lib/cache.ts +0 -193
  372. package/renderer/lib/docs/config/domain-schema.ts +0 -260
  373. package/renderer/lib/docs/config/index.ts +0 -43
  374. package/renderer/lib/docs/config/loader.ts +0 -142
  375. package/renderer/lib/docs/config/schema.ts +0 -308
  376. package/renderer/lib/docs/index.ts +0 -12
  377. package/renderer/lib/docs/mdx/compiler.ts +0 -176
  378. package/renderer/lib/docs/mdx/frontmatter.ts +0 -91
  379. package/renderer/lib/docs/mdx/index.ts +0 -26
  380. package/renderer/lib/docs/navigation/generator.ts +0 -348
  381. package/renderer/lib/docs/navigation/index.ts +0 -12
  382. package/renderer/lib/docs/navigation/types.ts +0 -123
  383. package/renderer/lib/docs-navigation-context.tsx +0 -80
  384. package/renderer/lib/multi-tenant/context.ts +0 -105
  385. package/renderer/lib/storage/blob.ts +0 -1083
  386. package/renderer/lib/utils/icons.ts +0 -48
  387. package/renderer/lib/utils.ts +0 -6
  388. package/renderer/next.config.ts +0 -76
@@ -0,0 +1,79 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useState, useCallback, useEffect } from 'react';
4
+ const MobileContext = /*#__PURE__*/ createContext(null);
5
+ export function MobileProvider({ children }) {
6
+ const [isLeftSidebarOpen, setIsLeftSidebarOpen] = useState(false);
7
+ const [isRightSidebarOpen, setIsRightSidebarOpen] = useState(false);
8
+ const [isMobile, setIsMobile] = useState(false);
9
+ // Detect mobile on mount and window resize
10
+ useEffect(()=>{
11
+ const checkMobile = ()=>{
12
+ setIsMobile(window.innerWidth < 1024); // lg breakpoint
13
+ };
14
+ // Initial check
15
+ checkMobile();
16
+ // Listen for resize
17
+ window.addEventListener('resize', checkMobile);
18
+ return ()=>window.removeEventListener('resize', checkMobile);
19
+ }, []);
20
+ // Close sidebars when switching to desktop
21
+ useEffect(()=>{
22
+ if (!isMobile) {
23
+ setIsLeftSidebarOpen(false);
24
+ setIsRightSidebarOpen(false);
25
+ }
26
+ }, [
27
+ isMobile
28
+ ]);
29
+ const toggleLeftSidebar = useCallback(()=>{
30
+ setIsLeftSidebarOpen((prev)=>!prev);
31
+ // Close right sidebar when opening left
32
+ setIsRightSidebarOpen(false);
33
+ }, []);
34
+ const toggleRightSidebar = useCallback(()=>{
35
+ setIsRightSidebarOpen((prev)=>!prev);
36
+ // Close left sidebar when opening right
37
+ setIsLeftSidebarOpen(false);
38
+ }, []);
39
+ const openLeftSidebar = useCallback(()=>{
40
+ setIsLeftSidebarOpen(true);
41
+ setIsRightSidebarOpen(false);
42
+ }, []);
43
+ const closeLeftSidebar = useCallback(()=>{
44
+ setIsLeftSidebarOpen(false);
45
+ }, []);
46
+ const openRightSidebar = useCallback(()=>{
47
+ setIsRightSidebarOpen(true);
48
+ setIsLeftSidebarOpen(false);
49
+ }, []);
50
+ const closeRightSidebar = useCallback(()=>{
51
+ setIsRightSidebarOpen(false);
52
+ }, []);
53
+ const closeAllSidebars = useCallback(()=>{
54
+ setIsLeftSidebarOpen(false);
55
+ setIsRightSidebarOpen(false);
56
+ }, []);
57
+ return /*#__PURE__*/ _jsx(MobileContext.Provider, {
58
+ value: {
59
+ isLeftSidebarOpen,
60
+ isRightSidebarOpen,
61
+ toggleLeftSidebar,
62
+ toggleRightSidebar,
63
+ openLeftSidebar,
64
+ closeLeftSidebar,
65
+ openRightSidebar,
66
+ closeRightSidebar,
67
+ closeAllSidebars,
68
+ isMobile
69
+ },
70
+ children: children
71
+ });
72
+ }
73
+ export function useMobile() {
74
+ const context = useContext(MobileContext);
75
+ if (!context) {
76
+ throw new Error('useMobile must be used within a MobileProvider');
77
+ }
78
+ return context;
79
+ }
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useCallback } from 'react';
4
+ const NavigationContext = /*#__PURE__*/ createContext(null);
5
+ /**
6
+ * Helper to find request by operationId (name) or ID in collection
7
+ */ function findRequestByOperationIdOrId(collection, operationIdOrId) {
8
+ // Normalize the search term (handle both snake_case and the formatted name)
9
+ const normalizedSearch = operationIdOrId.toLowerCase().replace(/[\s-]/g, '_');
10
+ // Check direct requests
11
+ for (const request of collection.requests){
12
+ // Check by ID
13
+ if (request.id === operationIdOrId) return request;
14
+ // Check by name (operationId) - exact match
15
+ if (request.name.toLowerCase().replace(/[\s-]/g, '_') === normalizedSearch) return request;
16
+ // Check by name - partial match (for formatted names like "Post Carts" -> "post_carts")
17
+ const requestNameNormalized = request.name.toLowerCase().replace(/[\s-]/g, '_');
18
+ if (requestNameNormalized === normalizedSearch) return request;
19
+ }
20
+ // Check folders recursively
21
+ for (const folder of collection.folders){
22
+ const request = findRequestByOperationIdOrId(folder, operationIdOrId);
23
+ if (request) return request;
24
+ }
25
+ return null;
26
+ }
27
+ export function NavigationProvider({ children, collection, onSelectRequest }) {
28
+ const navigateToEndpoint = useCallback((operationIdOrId)=>{
29
+ if (!collection) {
30
+ console.warn('[Navigation] No collection available');
31
+ return;
32
+ }
33
+ const request = findRequestByOperationIdOrId(collection, operationIdOrId);
34
+ if (request) {
35
+ console.log('[Navigation] Navigating to endpoint:', request.name);
36
+ onSelectRequest(request);
37
+ } else {
38
+ console.warn('[Navigation] Endpoint not found:', operationIdOrId);
39
+ }
40
+ }, [
41
+ collection,
42
+ onSelectRequest
43
+ ]);
44
+ return /*#__PURE__*/ _jsx(NavigationContext.Provider, {
45
+ value: {
46
+ navigateToEndpoint,
47
+ collection
48
+ },
49
+ children: children
50
+ });
51
+ }
52
+ export function useNavigation() {
53
+ const context = useContext(NavigationContext);
54
+ if (!context) {
55
+ // Return a no-op function if not in provider (for backwards compatibility)
56
+ return {
57
+ navigateToEndpoint: ()=>{},
58
+ collection: null
59
+ };
60
+ }
61
+ return context;
62
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * GraphQL Parser Module
3
+ *
4
+ * Main entry point for GraphQL schema parsing and transformation.
5
+ */ export * from './types';
6
+ export * from './parser';
7
+ export * from './transformer';
8
+ import { parseGraphQLSchema, validateGraphQLSchema } from './parser';
9
+ import { convertGraphQLToBrainfishCollection, convertGraphQLToCollection } from './transformer';
10
+ export const GRAPHQL_INVALID_SCHEMA = 'graphql/invalid_schema';
11
+ /**
12
+ * Import a GraphQL schema from SDL string or file content
13
+ * Returns a BrainfishCollection for integration with existing UI
14
+ */ export async function importGraphQLSchema(input, options = {}) {
15
+ const { name = 'GraphQL API', endpoint = '/graphql', description } = options;
16
+ // Validate the schema
17
+ const validation = validateGraphQLSchema(input);
18
+ if (!validation.valid) {
19
+ throw new Error(`${GRAPHQL_INVALID_SCHEMA}: ${validation.error}`);
20
+ }
21
+ // Parse the schema
22
+ const schema = parseGraphQLSchema(input);
23
+ // Convert to BrainfishCollection
24
+ return convertGraphQLToBrainfishCollection(schema, name, endpoint, description);
25
+ }
26
+ /**
27
+ * Import a GraphQL schema and return the full GraphQL collection
28
+ * with schema information preserved
29
+ */ export async function importGraphQLSchemaFull(input, options = {}) {
30
+ const { name = 'GraphQL API', endpoint = '/graphql', description } = options;
31
+ // Validate the schema
32
+ const validation = validateGraphQLSchema(input);
33
+ if (!validation.valid) {
34
+ throw new Error(`${GRAPHQL_INVALID_SCHEMA}: ${validation.error}`);
35
+ }
36
+ // Parse the schema
37
+ const schema = parseGraphQLSchema(input);
38
+ // Convert to full GraphQL collection
39
+ return convertGraphQLToCollection(schema, name, endpoint, description);
40
+ }
41
+ /**
42
+ * Parse GraphQL schema without converting to collection
43
+ * Useful for schema exploration and type information
44
+ */ export async function parseGraphQL(input) {
45
+ const validation = validateGraphQLSchema(input);
46
+ if (!validation.valid) {
47
+ throw new Error(`${GRAPHQL_INVALID_SCHEMA}: ${validation.error}`);
48
+ }
49
+ return parseGraphQLSchema(input);
50
+ }
@@ -0,0 +1,350 @@
1
+ /**
2
+ * GraphQL Schema Parser
3
+ *
4
+ * Parses GraphQL SDL (Schema Definition Language) files into our internal types.
5
+ * Uses the graphql-js library for parsing.
6
+ */ import { buildSchema, isObjectType, isInputObjectType, isEnumType, isInterfaceType, isUnionType, isScalarType, isNonNullType, isListType, isNamedType, getNamedType } from 'graphql';
7
+ // ============================================================================
8
+ // Type Conversion Helpers
9
+ // ============================================================================
10
+ /**
11
+ * Convert a GraphQL type to our type reference format
12
+ */ function convertTypeToRef(type) {
13
+ if (isNonNullType(type)) {
14
+ return {
15
+ kind: 'NON_NULL',
16
+ name: null,
17
+ ofType: convertTypeToRef(type.ofType)
18
+ };
19
+ }
20
+ if (isListType(type)) {
21
+ return {
22
+ kind: 'LIST',
23
+ name: null,
24
+ ofType: convertTypeToRef(type.ofType)
25
+ };
26
+ }
27
+ if (isNamedType(type)) {
28
+ const namedType = getNamedType(type);
29
+ let kind = 'SCALAR';
30
+ if (isObjectType(namedType)) kind = 'OBJECT';
31
+ else if (isInputObjectType(namedType)) kind = 'INPUT_OBJECT';
32
+ else if (isEnumType(namedType)) kind = 'ENUM';
33
+ else if (isInterfaceType(namedType)) kind = 'INTERFACE';
34
+ else if (isUnionType(namedType)) kind = 'UNION';
35
+ else if (isScalarType(namedType)) kind = 'SCALAR';
36
+ return {
37
+ kind,
38
+ name: namedType.name,
39
+ ofType: null
40
+ };
41
+ }
42
+ return {
43
+ kind: 'SCALAR',
44
+ name: 'Unknown',
45
+ ofType: null
46
+ };
47
+ }
48
+ /**
49
+ * Convert GraphQL argument to our format
50
+ */ function convertArgument(arg) {
51
+ return {
52
+ name: arg.name,
53
+ description: arg.description || null,
54
+ type: convertTypeToRef(arg.type),
55
+ defaultValue: arg.defaultValue !== undefined ? JSON.stringify(arg.defaultValue) : null,
56
+ isRequired: isNonNullType(arg.type)
57
+ };
58
+ }
59
+ /**
60
+ * Convert GraphQL input field to our format
61
+ */ function convertInputField(field) {
62
+ return {
63
+ name: field.name,
64
+ description: field.description || null,
65
+ type: convertTypeToRef(field.type),
66
+ defaultValue: field.defaultValue !== undefined ? JSON.stringify(field.defaultValue) : null,
67
+ isRequired: isNonNullType(field.type)
68
+ };
69
+ }
70
+ /**
71
+ * Convert GraphQL field to our format
72
+ */ function convertField(field) {
73
+ return {
74
+ name: field.name,
75
+ description: field.description || null,
76
+ args: field.args.map(convertArgument),
77
+ type: convertTypeToRef(field.type),
78
+ isDeprecated: field.deprecationReason != null,
79
+ deprecationReason: field.deprecationReason || null
80
+ };
81
+ }
82
+ // ============================================================================
83
+ // Type Definition Converters
84
+ // ============================================================================
85
+ /**
86
+ * Convert an object type to our format
87
+ */ function convertObjectType(type) {
88
+ const fields = type.getFields();
89
+ return {
90
+ kind: 'OBJECT',
91
+ name: type.name,
92
+ description: type.description || null,
93
+ fields: Object.values(fields).map(convertField),
94
+ interfaces: type.getInterfaces().map((i)=>i.name)
95
+ };
96
+ }
97
+ /**
98
+ * Convert an input object type to our format
99
+ */ function convertInputObjectType(type) {
100
+ const fields = type.getFields();
101
+ return {
102
+ kind: 'INPUT_OBJECT',
103
+ name: type.name,
104
+ description: type.description || null,
105
+ inputFields: Object.values(fields).map(convertInputField)
106
+ };
107
+ }
108
+ /**
109
+ * Convert an enum type to our format
110
+ */ function convertEnumType(type) {
111
+ return {
112
+ kind: 'ENUM',
113
+ name: type.name,
114
+ description: type.description || null,
115
+ enumValues: type.getValues().map((v)=>({
116
+ name: v.name,
117
+ description: v.description || null,
118
+ isDeprecated: v.deprecationReason != null,
119
+ deprecationReason: v.deprecationReason || null
120
+ }))
121
+ };
122
+ }
123
+ /**
124
+ * Convert an interface type to our format
125
+ */ function convertInterfaceType(type, schema) {
126
+ const fields = type.getFields();
127
+ const implementations = schema.getPossibleTypes(type);
128
+ return {
129
+ kind: 'INTERFACE',
130
+ name: type.name,
131
+ description: type.description || null,
132
+ fields: Object.values(fields).map(convertField),
133
+ possibleTypes: implementations.map((t)=>t.name)
134
+ };
135
+ }
136
+ /**
137
+ * Convert a union type to our format
138
+ */ function convertUnionType(type) {
139
+ return {
140
+ kind: 'UNION',
141
+ name: type.name,
142
+ description: type.description || null,
143
+ possibleTypes: type.getTypes().map((t)=>t.name)
144
+ };
145
+ }
146
+ /**
147
+ * Convert a scalar type to our format
148
+ */ function convertScalarType(type) {
149
+ return {
150
+ kind: 'SCALAR',
151
+ name: type.name,
152
+ description: type.description || null
153
+ };
154
+ }
155
+ // ============================================================================
156
+ // Operation Extractors
157
+ // ============================================================================
158
+ /**
159
+ * Extract operations from a root type (Query, Mutation, Subscription)
160
+ */ function extractOperations(rootType, operationType) {
161
+ if (!rootType) return [];
162
+ const fields = rootType.getFields();
163
+ return Object.values(fields).map((field)=>({
164
+ id: `${operationType}-${field.name}`.toLowerCase(),
165
+ name: field.name,
166
+ description: field.description || null,
167
+ operationType,
168
+ args: field.args.map(convertArgument),
169
+ returnType: convertTypeToRef(field.type),
170
+ isDeprecated: field.deprecationReason != null,
171
+ deprecationReason: field.deprecationReason || null
172
+ }));
173
+ }
174
+ /**
175
+ * Extract directives from schema
176
+ */ function extractDirectives(schema) {
177
+ return schema.getDirectives().map((directive)=>({
178
+ name: directive.name,
179
+ description: directive.description || null,
180
+ locations: directive.locations,
181
+ args: directive.args.map(convertArgument)
182
+ }));
183
+ }
184
+ // ============================================================================
185
+ // Main Parser Functions
186
+ // ============================================================================
187
+ /**
188
+ * Parse a GraphQL SDL string into our schema format
189
+ */ export function parseGraphQLSchema(sdl) {
190
+ // Build the schema from SDL
191
+ const schema = buildSchema(sdl);
192
+ return convertGraphQLSchema(schema);
193
+ }
194
+ /**
195
+ * Convert a graphql-js schema object to our format
196
+ */ export function convertGraphQLSchema(schema) {
197
+ const typeMap = schema.getTypeMap();
198
+ const types = {};
199
+ // Convert all types (excluding built-in types that start with __)
200
+ for (const [name, type] of Object.entries(typeMap)){
201
+ if (name.startsWith('__')) continue; // Skip introspection types
202
+ if (isObjectType(type)) {
203
+ types[name] = convertObjectType(type);
204
+ } else if (isInputObjectType(type)) {
205
+ types[name] = convertInputObjectType(type);
206
+ } else if (isEnumType(type)) {
207
+ types[name] = convertEnumType(type);
208
+ } else if (isInterfaceType(type)) {
209
+ types[name] = convertInterfaceType(type, schema);
210
+ } else if (isUnionType(type)) {
211
+ types[name] = convertUnionType(type);
212
+ } else if (isScalarType(type)) {
213
+ types[name] = convertScalarType(type);
214
+ }
215
+ }
216
+ // Get root types
217
+ const queryType = schema.getQueryType();
218
+ const mutationType = schema.getMutationType();
219
+ const subscriptionType = schema.getSubscriptionType();
220
+ // Schema info
221
+ const info = {
222
+ description: schema.description || null,
223
+ queryType: queryType?.name || null,
224
+ mutationType: mutationType?.name || null,
225
+ subscriptionType: subscriptionType?.name || null
226
+ };
227
+ return {
228
+ info,
229
+ types,
230
+ directives: extractDirectives(schema),
231
+ queries: extractOperations(queryType, 'query'),
232
+ mutations: extractOperations(mutationType, 'mutation'),
233
+ subscriptions: extractOperations(subscriptionType, 'subscription')
234
+ };
235
+ }
236
+ /**
237
+ * Parse GraphQL SDL from a file content (handles both .graphql and .gql)
238
+ */ export async function parseGraphQLFile(content) {
239
+ return parseGraphQLSchema(content);
240
+ }
241
+ /**
242
+ * Validate that content is valid GraphQL SDL
243
+ */ export function validateGraphQLSchema(sdl) {
244
+ try {
245
+ buildSchema(sdl);
246
+ return {
247
+ valid: true
248
+ };
249
+ } catch (error) {
250
+ return {
251
+ valid: false,
252
+ error: error instanceof Error ? error.message : 'Invalid GraphQL schema'
253
+ };
254
+ }
255
+ }
256
+ /**
257
+ * Parse introspection query result to our schema format
258
+ */ export function parseIntrospectionResult(introspectionResult) {
259
+ // The introspection result contains __schema with types, directives, etc.
260
+ // We need to convert this to our format
261
+ // For now, this is a placeholder - full implementation would parse the introspection JSON
262
+ const result = introspectionResult;
263
+ if (!result.__schema) {
264
+ throw new Error('Invalid introspection result: missing __schema');
265
+ }
266
+ // This is a simplified implementation
267
+ // A full implementation would parse all the introspection data
268
+ const schema = {
269
+ info: {
270
+ description: null,
271
+ queryType: result.__schema.queryType?.name || null,
272
+ mutationType: result.__schema.mutationType?.name || null,
273
+ subscriptionType: result.__schema.subscriptionType?.name || null
274
+ },
275
+ types: {},
276
+ directives: [],
277
+ queries: [],
278
+ mutations: [],
279
+ subscriptions: []
280
+ };
281
+ return schema;
282
+ }
283
+ // ============================================================================
284
+ // Query Generation Helpers
285
+ // ============================================================================
286
+ /**
287
+ * Generate a sample query string for an operation
288
+ */ export function generateOperationQuery(operation) {
289
+ const operationKeyword = operation.operationType;
290
+ const args = operation.args.map((arg)=>`$${arg.name}: ${formatTypeRefForQuery(arg.type)}`).join(', ');
291
+ const fieldArgs = operation.args.map((arg)=>`${arg.name}: $${arg.name}`).join(', ');
292
+ const argsStr = args ? `(${args})` : '';
293
+ const fieldArgsStr = fieldArgs ? `(${fieldArgs})` : '';
294
+ return `${operationKeyword} ${operation.name}${argsStr} {
295
+ ${operation.name}${fieldArgsStr} {
296
+ # Add fields here
297
+ }
298
+ }`;
299
+ }
300
+ /**
301
+ * Format type ref for query variables
302
+ */ function formatTypeRefForQuery(typeRef) {
303
+ if (typeRef.kind === 'NON_NULL' && typeRef.ofType) {
304
+ return `${formatTypeRefForQuery(typeRef.ofType)}!`;
305
+ }
306
+ if (typeRef.kind === 'LIST' && typeRef.ofType) {
307
+ return `[${formatTypeRefForQuery(typeRef.ofType)}]`;
308
+ }
309
+ return typeRef.name || 'Unknown';
310
+ }
311
+ /**
312
+ * Generate example variables for an operation
313
+ */ export function generateExampleVariables(operation) {
314
+ const variables = {};
315
+ for (const arg of operation.args){
316
+ variables[arg.name] = generateExampleValue(arg.type);
317
+ }
318
+ return variables;
319
+ }
320
+ /**
321
+ * Generate example value for a type
322
+ */ function generateExampleValue(typeRef) {
323
+ // Unwrap non-null
324
+ if (typeRef.kind === 'NON_NULL' && typeRef.ofType) {
325
+ return generateExampleValue(typeRef.ofType);
326
+ }
327
+ // Handle list
328
+ if (typeRef.kind === 'LIST' && typeRef.ofType) {
329
+ return [
330
+ generateExampleValue(typeRef.ofType)
331
+ ];
332
+ }
333
+ // Handle named types
334
+ const typeName = typeRef.name;
335
+ switch(typeName){
336
+ case 'String':
337
+ return 'example';
338
+ case 'Int':
339
+ return 42;
340
+ case 'Float':
341
+ return 3.14;
342
+ case 'Boolean':
343
+ return true;
344
+ case 'ID':
345
+ return 'abc123';
346
+ default:
347
+ // For custom types, return an empty object as placeholder
348
+ return {};
349
+ }
350
+ }