polen 0.10.0-next.14 → 0.10.0-next.4

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 (525) hide show
  1. package/README.md +1 -2
  2. package/build/api/builder/builder.js +1 -1
  3. package/build/api/builder/builder.js.map +1 -1
  4. package/build/api/config/load.js +6 -6
  5. package/build/api/config/load.js.map +1 -1
  6. package/build/api/config-resolver/resolve.js +2 -2
  7. package/build/api/config-resolver/resolve.js.map +1 -1
  8. package/build/api/schema/data-sources/schema-directory/schema-directory.js +1 -1
  9. package/build/api/schema/data-sources/schema-directory/schema-directory.js.map +1 -1
  10. package/build/api/vite/plugins/branding/index.js +4 -4
  11. package/build/api/vite/plugins/branding/index.js.map +1 -1
  12. package/build/api/vite/plugins/build.d.ts.map +1 -1
  13. package/build/api/vite/plugins/build.js +4 -12
  14. package/build/api/vite/plugins/build.js.map +1 -1
  15. package/build/api/vite/plugins/core.d.ts +2 -2
  16. package/build/api/vite/plugins/core.d.ts.map +1 -1
  17. package/build/api/vite/plugins/core.js +13 -13
  18. package/build/api/vite/plugins/core.js.map +1 -1
  19. package/build/api/vite/plugins/pages.d.ts +14 -8
  20. package/build/api/vite/plugins/pages.d.ts.map +1 -1
  21. package/build/api/vite/plugins/pages.js +185 -111
  22. package/build/api/vite/plugins/pages.js.map +1 -1
  23. package/build/api/vite/plugins/serve.d.ts.map +1 -1
  24. package/build/api/vite/plugins/serve.js +12 -52
  25. package/build/api/vite/plugins/serve.js.map +1 -1
  26. package/build/cli/_/self-contained-mode.js +5 -5
  27. package/build/cli/_/self-contained-mode.js.map +1 -1
  28. package/build/lib/demos/config-schema.d.ts +20 -20
  29. package/build/lib/file-router/diagnostic-reporter.js +2 -2
  30. package/build/lib/file-router/diagnostic-reporter.js.map +1 -1
  31. package/build/lib/file-router/file-router.d.ts +2 -0
  32. package/build/lib/file-router/file-router.d.ts.map +1 -1
  33. package/build/lib/file-router/file-router.js +2 -0
  34. package/build/lib/file-router/file-router.js.map +1 -1
  35. package/build/lib/file-router/route.d.ts +0 -2
  36. package/build/lib/file-router/route.d.ts.map +1 -1
  37. package/build/lib/file-router/route.js.map +1 -1
  38. package/build/lib/file-router/scan-tree.d.ts +20 -0
  39. package/build/lib/file-router/scan-tree.d.ts.map +1 -0
  40. package/build/lib/file-router/scan-tree.js +158 -0
  41. package/build/lib/file-router/scan-tree.js.map +1 -0
  42. package/build/lib/file-router/scan.d.ts.map +1 -1
  43. package/build/lib/file-router/scan.js +13 -22
  44. package/build/lib/file-router/scan.js.map +1 -1
  45. package/build/lib/file-router/sidebar/index.d.ts +3 -0
  46. package/build/lib/file-router/sidebar/index.d.ts.map +1 -0
  47. package/build/lib/file-router/sidebar/index.js +4 -0
  48. package/build/lib/file-router/sidebar/index.js.map +1 -0
  49. package/build/lib/file-router/sidebar/sidebar-tree.d.ts +9 -0
  50. package/build/lib/file-router/sidebar/sidebar-tree.d.ts.map +1 -0
  51. package/build/lib/file-router/sidebar/sidebar-tree.js +85 -0
  52. package/build/lib/file-router/sidebar/sidebar-tree.js.map +1 -0
  53. package/build/lib/file-router/sidebar/types.d.ts +17 -0
  54. package/build/lib/file-router/sidebar/types.d.ts.map +1 -0
  55. package/build/lib/file-router/sidebar/types.js.map +1 -0
  56. package/build/lib/github-actions/runner.js +2 -2
  57. package/build/lib/github-actions/runner.js.map +1 -1
  58. package/build/lib/github-actions/schemas/context.d.ts +2 -2
  59. package/build/lib/kit-temp.d.ts +0 -103
  60. package/build/lib/kit-temp.d.ts.map +1 -1
  61. package/build/lib/kit-temp.js +3 -239
  62. package/build/lib/kit-temp.js.map +1 -1
  63. package/build/lib/tree/index.d.ts +3 -0
  64. package/build/lib/tree/index.d.ts.map +1 -0
  65. package/build/lib/tree/index.js +2 -0
  66. package/build/lib/tree/index.js.map +1 -0
  67. package/build/lib/tree/tree.d.ts +62 -0
  68. package/build/lib/tree/tree.d.ts.map +1 -0
  69. package/build/lib/tree/tree.js +134 -0
  70. package/build/lib/tree/tree.js.map +1 -0
  71. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts +8 -1
  72. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts.map +1 -1
  73. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js +53 -48
  74. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js.map +1 -1
  75. package/build/package-paths.js +3 -3
  76. package/build/package-paths.js.map +1 -1
  77. package/build/sandbox.js +2 -17
  78. package/build/sandbox.js.map +1 -1
  79. package/build/singletons/debug.d.ts +1 -1
  80. package/build/singletons/debug.d.ts.map +1 -1
  81. package/build/singletons/debug.js +1 -1
  82. package/build/singletons/debug.js.map +1 -1
  83. package/build/template/components/ArgumentAnnotation.jsx +16 -0
  84. package/build/template/components/ArgumentAnnotation.jsx.map +1 -0
  85. package/build/template/components/ArgumentList.jsx +16 -0
  86. package/build/template/components/ArgumentList.jsx.map +1 -0
  87. package/build/template/components/ArgumentListAnnotation.jsx +23 -0
  88. package/build/template/components/ArgumentListAnnotation.jsx.map +1 -0
  89. package/build/template/components/Changelog.jsx +68 -0
  90. package/build/template/components/Changelog.jsx.map +1 -0
  91. package/build/template/components/{CodeBlock.js → CodeBlock.jsx} +5 -4
  92. package/build/template/components/{CodeBlock.js.map → CodeBlock.jsx.map} +1 -1
  93. package/build/template/components/DeprecationReason.jsx +10 -0
  94. package/build/template/components/DeprecationReason.jsx.map +1 -0
  95. package/build/template/components/Description.jsx +10 -0
  96. package/build/template/components/Description.jsx.map +1 -0
  97. package/build/template/components/Field.jsx +22 -0
  98. package/build/template/components/Field.jsx.map +1 -0
  99. package/build/template/components/{FieldList.js → FieldList.jsx} +5 -4
  100. package/build/template/components/FieldList.jsx.map +1 -0
  101. package/build/template/components/{FieldListSection.js → FieldListSection.jsx} +6 -4
  102. package/build/template/components/FieldListSection.jsx.map +1 -0
  103. package/build/template/components/Link.d.ts +2 -2
  104. package/build/template/components/Link.d.ts.map +1 -1
  105. package/build/template/components/{Link.js → Link.jsx} +9 -17
  106. package/build/template/components/Link.jsx.map +1 -0
  107. package/build/template/components/Logo.jsx +29 -0
  108. package/build/template/components/Logo.jsx.map +1 -0
  109. package/build/template/components/{Markdown.js → Markdown.jsx} +2 -3
  110. package/build/template/components/Markdown.jsx.map +1 -0
  111. package/build/template/components/MissingSchema.d.ts +1 -1
  112. package/build/template/components/MissingSchema.d.ts.map +1 -1
  113. package/build/template/components/MissingSchema.jsx +4 -0
  114. package/build/template/components/MissingSchema.jsx.map +1 -0
  115. package/build/template/components/NamedType.jsx +17 -0
  116. package/build/template/components/NamedType.jsx.map +1 -0
  117. package/build/template/components/{RadixLink.js → RadixLink.jsx} +1 -1
  118. package/build/template/components/RadixLink.jsx.map +1 -0
  119. package/build/template/components/Texts/{MinorHeading.js → MinorHeading.jsx} +3 -4
  120. package/build/template/components/Texts/MinorHeading.jsx.map +1 -0
  121. package/build/template/components/Texts/texts.js +1 -1
  122. package/build/template/components/Texts/texts.js.map +1 -1
  123. package/build/template/components/{TypeAnnotation.js → TypeAnnotation.jsx} +18 -8
  124. package/build/template/components/TypeAnnotation.jsx.map +1 -0
  125. package/build/template/components/TypeFieldsLinkList.jsx +17 -0
  126. package/build/template/components/TypeFieldsLinkList.jsx.map +1 -0
  127. package/build/template/components/TypeIndex.jsx +27 -0
  128. package/build/template/components/TypeIndex.jsx.map +1 -0
  129. package/build/template/components/graphql/graphql.d.ts +2 -2
  130. package/build/template/components/graphql/graphql.jsx +3 -0
  131. package/build/template/components/graphql/graphql.jsx.map +1 -0
  132. package/build/template/components/graphql/index.d.ts +1 -1
  133. package/build/template/components/graphql/index.js +1 -1
  134. package/build/template/components/graphql/index.js.map +1 -1
  135. package/build/template/components/graphql/{type-kind-icon.js → type-kind-icon.jsx} +2 -3
  136. package/build/template/components/graphql/type-kind-icon.jsx.map +1 -0
  137. package/build/template/components/graphql/type-link.jsx +16 -0
  138. package/build/template/components/graphql/type-link.jsx.map +1 -0
  139. package/build/template/components/sidebar/Sidebar.d.ts +3 -3
  140. package/build/template/components/sidebar/Sidebar.d.ts.map +1 -1
  141. package/build/template/components/sidebar/Sidebar.jsx +15 -0
  142. package/build/template/components/sidebar/Sidebar.jsx.map +1 -0
  143. package/build/template/components/sidebar/SidebarItem.d.ts +3 -3
  144. package/build/template/components/sidebar/SidebarItem.d.ts.map +1 -1
  145. package/build/template/components/sidebar/{SidebarItem.js → SidebarItem.jsx} +35 -18
  146. package/build/template/components/sidebar/SidebarItem.jsx.map +1 -0
  147. package/build/template/components/sidebar/ToggleButton.d.ts +1 -1
  148. package/build/template/components/sidebar/ToggleButton.d.ts.map +1 -1
  149. package/build/template/components/sidebar/ToggleButton.jsx +6 -0
  150. package/build/template/components/sidebar/ToggleButton.jsx.map +1 -0
  151. package/build/template/entry.client.d.ts +0 -1
  152. package/build/template/entry.client.d.ts.map +1 -1
  153. package/build/template/{entry.client.js → entry.client.jsx} +9 -5
  154. package/build/template/entry.client.jsx.map +1 -0
  155. package/build/template/routes/changelog.d.ts +1 -1
  156. package/build/template/routes/{changelog.js → changelog.jsx} +4 -5
  157. package/build/template/routes/changelog.jsx.map +1 -0
  158. package/build/template/routes/{index.js → index.jsx} +2 -3
  159. package/build/template/routes/index.jsx.map +1 -0
  160. package/build/template/routes/reference.$type.$field.d.ts +1 -1
  161. package/build/template/routes/{reference.$type.$field.js → reference.$type.$field.jsx} +5 -6
  162. package/build/template/routes/reference.$type.$field.jsx.map +1 -0
  163. package/build/template/routes/reference.$type.d.ts +1 -1
  164. package/build/template/routes/{reference.$type.js → reference.$type.jsx} +5 -6
  165. package/build/template/routes/reference.$type.jsx.map +1 -0
  166. package/build/template/routes/reference.d.ts +2 -2
  167. package/build/template/routes/reference.d.ts.map +1 -1
  168. package/build/template/routes/{reference.js → reference.jsx} +12 -7
  169. package/build/template/routes/reference.jsx.map +1 -0
  170. package/build/template/routes/root.d.ts +2 -2
  171. package/build/template/routes/root.d.ts.map +1 -1
  172. package/build/template/routes/root.jsx +188 -0
  173. package/build/template/routes/root.jsx.map +1 -0
  174. package/build/template/routes.jsx +5 -0
  175. package/build/template/routes.jsx.map +1 -0
  176. package/build/template/server/app.d.ts +1 -8
  177. package/build/template/server/app.d.ts.map +1 -1
  178. package/build/template/server/app.js +21 -21
  179. package/build/template/server/app.js.map +1 -1
  180. package/build/template/server/main.js +1 -2
  181. package/build/template/server/main.js.map +1 -1
  182. package/build/template/server/render-page.d.ts +3 -0
  183. package/build/template/server/render-page.d.ts.map +1 -0
  184. package/build/template/server/{create-page-html-response.js → render-page.jsx} +17 -11
  185. package/build/template/server/render-page.jsx.map +1 -0
  186. package/build/template/server/ssg/generate.d.ts.map +1 -1
  187. package/build/template/server/ssg/generate.js +34 -33
  188. package/build/template/server/ssg/generate.js.map +1 -1
  189. package/build/template/server/ssg/get-route-paths.js +1 -1
  190. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  191. package/build/template/server/view.js +1 -1
  192. package/build/template/server/view.js.map +1 -1
  193. package/package.json +9 -66
  194. package/src/api/config/load.ts +5 -5
  195. package/src/api/config-resolver/resolve.ts +2 -2
  196. package/src/api/schema/data-sources/schema-directory/schema-directory.ts +1 -1
  197. package/src/api/singletons/markdown/markdown.test.ts +1 -1
  198. package/src/api/vite/plugins/branding/index.ts +4 -4
  199. package/src/api/vite/plugins/build.ts +89 -97
  200. package/src/api/vite/plugins/core.ts +16 -18
  201. package/src/api/vite/plugins/pages.ts +209 -135
  202. package/src/api/vite/plugins/serve.ts +14 -67
  203. package/src/cli/_/self-contained-mode.ts +5 -5
  204. package/src/lib/deployment/$$.ts +1 -1
  205. package/src/lib/deployment/$.test.ts +3 -3
  206. package/src/lib/deployment/$.ts +1 -1
  207. package/src/lib/file-router/diagnostic-reporter.ts +2 -2
  208. package/src/lib/file-router/file-router.ts +2 -0
  209. package/src/lib/file-router/linter.test.ts +0 -2
  210. package/src/lib/file-router/route.ts +0 -2
  211. package/src/lib/file-router/scan-tree.test.ts +189 -0
  212. package/src/lib/file-router/scan-tree.ts +205 -0
  213. package/src/lib/file-router/scan.ts +14 -26
  214. package/src/lib/file-router/sidebar/index.ts +3 -0
  215. package/src/lib/file-router/sidebar/sidebar-tree.test.ts +123 -0
  216. package/src/lib/file-router/sidebar/sidebar-tree.ts +110 -0
  217. package/src/lib/file-router/sidebar/types.ts +19 -0
  218. package/src/lib/kit-temp.test.ts +7 -19
  219. package/src/lib/kit-temp.ts +5 -307
  220. package/src/lib/task/$.test.ts +3 -3
  221. package/src/lib/tree/index.ts +2 -0
  222. package/src/lib/tree/tree.test.ts +117 -0
  223. package/src/lib/tree/tree.ts +183 -0
  224. package/src/lib/version-history/index.test.ts +4 -12
  225. package/src/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.ts +58 -52
  226. package/src/package-paths.ts +3 -3
  227. package/src/sandbox.ts +1 -20
  228. package/src/singletons/debug.ts +1 -1
  229. package/src/template/components/ArgumentAnnotation.tsx +1 -1
  230. package/src/template/components/ArgumentList.tsx +1 -1
  231. package/src/template/components/ArgumentListAnnotation.tsx +2 -2
  232. package/src/template/components/DeprecationReason.tsx +1 -1
  233. package/src/template/components/Description.tsx +1 -1
  234. package/src/template/components/Field.tsx +4 -4
  235. package/src/template/components/FieldList.tsx +1 -1
  236. package/src/template/components/FieldListSection.tsx +1 -1
  237. package/src/template/components/Link.tsx +14 -22
  238. package/src/template/components/NamedType.tsx +2 -2
  239. package/src/template/components/TypeAnnotation.tsx +1 -1
  240. package/src/template/components/TypeFieldsLinkList.tsx +1 -1
  241. package/src/template/components/TypeIndex.tsx +1 -1
  242. package/src/template/components/graphql/graphql.tsx +2 -2
  243. package/src/template/components/graphql/index.ts +1 -1
  244. package/src/template/components/graphql/type-link.tsx +2 -2
  245. package/src/template/components/sidebar/Sidebar.tsx +2 -2
  246. package/src/template/components/sidebar/SidebarItem.tsx +14 -14
  247. package/src/template/entry.client.tsx +5 -2
  248. package/src/template/routes/changelog.tsx +1 -1
  249. package/src/template/routes/reference.$type.$field.tsx +3 -3
  250. package/src/template/routes/reference.$type.tsx +3 -3
  251. package/src/template/routes/reference.tsx +10 -6
  252. package/src/template/routes/root.tsx +108 -112
  253. package/src/template/routes.tsx +1 -1
  254. package/src/template/server/app.ts +23 -33
  255. package/src/template/server/main.ts +1 -2
  256. package/src/template/server/{create-page-html-response.ts → render-page.tsx} +16 -19
  257. package/src/template/server/ssg/generate.ts +72 -68
  258. package/src/template/server/ssg/get-route-paths.ts +1 -1
  259. package/src/template/server/view.ts +1 -1
  260. package/src/template/styles/code-block.css +0 -32
  261. package/build/api/content/$$.d.ts +0 -7
  262. package/build/api/content/$$.d.ts.map +0 -1
  263. package/build/api/content/$$.js +0 -7
  264. package/build/api/content/$$.js.map +0 -1
  265. package/build/api/content/$.d.ts +0 -2
  266. package/build/api/content/$.d.ts.map +0 -1
  267. package/build/api/content/$.js +0 -2
  268. package/build/api/content/$.js.map +0 -1
  269. package/build/api/content/metadata.d.ts +0 -10
  270. package/build/api/content/metadata.d.ts.map +0 -1
  271. package/build/api/content/metadata.js +0 -9
  272. package/build/api/content/metadata.js.map +0 -1
  273. package/build/api/content/navbar.d.ts +0 -10
  274. package/build/api/content/navbar.d.ts.map +0 -1
  275. package/build/api/content/navbar.js +0 -45
  276. package/build/api/content/navbar.js.map +0 -1
  277. package/build/api/content/page.d.ts +0 -11
  278. package/build/api/content/page.d.ts.map +0 -1
  279. package/build/api/content/page.js +0 -2
  280. package/build/api/content/page.js.map +0 -1
  281. package/build/api/content/scan.d.ts +0 -19
  282. package/build/api/content/scan.d.ts.map +0 -1
  283. package/build/api/content/scan.js +0 -90
  284. package/build/api/content/scan.js.map +0 -1
  285. package/build/api/content/sidebar.d.ts +0 -104
  286. package/build/api/content/sidebar.d.ts.map +0 -1
  287. package/build/api/content/sidebar.js +0 -166
  288. package/build/api/content/sidebar.js.map +0 -1
  289. package/build/api/content/utils.d.ts +0 -5
  290. package/build/api/content/utils.d.ts.map +0 -1
  291. package/build/api/content/utils.js +0 -8
  292. package/build/api/content/utils.js.map +0 -1
  293. package/build/exports/components.d.ts +0 -5
  294. package/build/exports/components.d.ts.map +0 -1
  295. package/build/exports/components.js +0 -5
  296. package/build/exports/components.js.map +0 -1
  297. package/build/lib/graphql-document/$$.d.ts +0 -5
  298. package/build/lib/graphql-document/$$.d.ts.map +0 -1
  299. package/build/lib/graphql-document/$$.js +0 -5
  300. package/build/lib/graphql-document/$$.js.map +0 -1
  301. package/build/lib/graphql-document/$.d.ts +0 -2
  302. package/build/lib/graphql-document/$.d.ts.map +0 -1
  303. package/build/lib/graphql-document/$.js +0 -2
  304. package/build/lib/graphql-document/$.js.map +0 -1
  305. package/build/lib/graphql-document/analysis.d.ts +0 -44
  306. package/build/lib/graphql-document/analysis.d.ts.map +0 -1
  307. package/build/lib/graphql-document/analysis.js +0 -361
  308. package/build/lib/graphql-document/analysis.js.map +0 -1
  309. package/build/lib/graphql-document/components/CopyButton.d.ts +0 -19
  310. package/build/lib/graphql-document/components/CopyButton.d.ts.map +0 -1
  311. package/build/lib/graphql-document/components/CopyButton.js +0 -43
  312. package/build/lib/graphql-document/components/CopyButton.js.map +0 -1
  313. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -38
  314. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +0 -1
  315. package/build/lib/graphql-document/components/GraphQLDocument.js +0 -142
  316. package/build/lib/graphql-document/components/GraphQLDocument.js.map +0 -1
  317. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +0 -7
  318. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +0 -1
  319. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +0 -45
  320. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +0 -1
  321. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +0 -33
  322. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +0 -1
  323. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +0 -48
  324. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +0 -1
  325. package/build/lib/graphql-document/components/IdentifierLink.d.ts +0 -39
  326. package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +0 -1
  327. package/build/lib/graphql-document/components/IdentifierLink.js +0 -75
  328. package/build/lib/graphql-document/components/IdentifierLink.js.map +0 -1
  329. package/build/lib/graphql-document/components/graphql-document-styles.d.ts +0 -5
  330. package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +0 -1
  331. package/build/lib/graphql-document/components/graphql-document-styles.js +0 -167
  332. package/build/lib/graphql-document/components/graphql-document-styles.js.map +0 -1
  333. package/build/lib/graphql-document/components/index.d.ts +0 -6
  334. package/build/lib/graphql-document/components/index.d.ts.map +0 -1
  335. package/build/lib/graphql-document/components/index.js +0 -6
  336. package/build/lib/graphql-document/components/index.js.map +0 -1
  337. package/build/lib/graphql-document/example.d.ts +0 -25
  338. package/build/lib/graphql-document/example.d.ts.map +0 -1
  339. package/build/lib/graphql-document/example.js +0 -140
  340. package/build/lib/graphql-document/example.js.map +0 -1
  341. package/build/lib/graphql-document/graphql-document.d.ts +0 -35
  342. package/build/lib/graphql-document/graphql-document.d.ts.map +0 -1
  343. package/build/lib/graphql-document/graphql-document.js +0 -36
  344. package/build/lib/graphql-document/graphql-document.js.map +0 -1
  345. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +0 -43
  346. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +0 -1
  347. package/build/lib/graphql-document/hooks/use-tooltip-state.js +0 -132
  348. package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +0 -1
  349. package/build/lib/graphql-document/positioning-simple.d.ts +0 -63
  350. package/build/lib/graphql-document/positioning-simple.d.ts.map +0 -1
  351. package/build/lib/graphql-document/positioning-simple.js +0 -185
  352. package/build/lib/graphql-document/positioning-simple.js.map +0 -1
  353. package/build/lib/graphql-document/schema-context.d.ts +0 -8
  354. package/build/lib/graphql-document/schema-context.d.ts.map +0 -1
  355. package/build/lib/graphql-document/schema-context.js +0 -11
  356. package/build/lib/graphql-document/schema-context.js.map +0 -1
  357. package/build/lib/graphql-document/schema-integration-example.d.ts +0 -27
  358. package/build/lib/graphql-document/schema-integration-example.d.ts.map +0 -1
  359. package/build/lib/graphql-document/schema-integration-example.js +0 -297
  360. package/build/lib/graphql-document/schema-integration-example.js.map +0 -1
  361. package/build/lib/graphql-document/schema-integration.d.ts +0 -135
  362. package/build/lib/graphql-document/schema-integration.d.ts.map +0 -1
  363. package/build/lib/graphql-document/schema-integration.js +0 -328
  364. package/build/lib/graphql-document/schema-integration.js.map +0 -1
  365. package/build/lib/graphql-document/types.d.ts +0 -117
  366. package/build/lib/graphql-document/types.d.ts.map +0 -1
  367. package/build/lib/graphql-document/types.js.map +0 -1
  368. package/build/template/components/ArgumentAnnotation.js +0 -10
  369. package/build/template/components/ArgumentAnnotation.js.map +0 -1
  370. package/build/template/components/ArgumentList.js +0 -9
  371. package/build/template/components/ArgumentList.js.map +0 -1
  372. package/build/template/components/ArgumentListAnnotation.js +0 -15
  373. package/build/template/components/ArgumentListAnnotation.js.map +0 -1
  374. package/build/template/components/Changelog.js +0 -44
  375. package/build/template/components/Changelog.js.map +0 -1
  376. package/build/template/components/CodeBlockEnhancer.d.ts +0 -2
  377. package/build/template/components/CodeBlockEnhancer.d.ts.map +0 -1
  378. package/build/template/components/CodeBlockEnhancer.js +0 -175
  379. package/build/template/components/CodeBlockEnhancer.js.map +0 -1
  380. package/build/template/components/DeprecationReason.js +0 -9
  381. package/build/template/components/DeprecationReason.js.map +0 -1
  382. package/build/template/components/Description.js +0 -9
  383. package/build/template/components/Description.js.map +0 -1
  384. package/build/template/components/Field.js +0 -14
  385. package/build/template/components/Field.js.map +0 -1
  386. package/build/template/components/FieldList.js.map +0 -1
  387. package/build/template/components/FieldListSection.js.map +0 -1
  388. package/build/template/components/HamburgerMenu.d.ts +0 -9
  389. package/build/template/components/HamburgerMenu.d.ts.map +0 -1
  390. package/build/template/components/HamburgerMenu.js +0 -30
  391. package/build/template/components/HamburgerMenu.js.map +0 -1
  392. package/build/template/components/Link.js.map +0 -1
  393. package/build/template/components/Logo.js +0 -20
  394. package/build/template/components/Logo.js.map +0 -1
  395. package/build/template/components/MDXComponents.d.ts +0 -11
  396. package/build/template/components/MDXComponents.d.ts.map +0 -1
  397. package/build/template/components/MDXComponents.js +0 -70
  398. package/build/template/components/MDXComponents.js.map +0 -1
  399. package/build/template/components/Markdown.js.map +0 -1
  400. package/build/template/components/MissingSchema.js +0 -5
  401. package/build/template/components/MissingSchema.js.map +0 -1
  402. package/build/template/components/NamedType.js +0 -12
  403. package/build/template/components/NamedType.js.map +0 -1
  404. package/build/template/components/NotFound.d.ts +0 -2
  405. package/build/template/components/NotFound.d.ts.map +0 -1
  406. package/build/template/components/NotFound.js +0 -7
  407. package/build/template/components/NotFound.js.map +0 -1
  408. package/build/template/components/RadixLink.js.map +0 -1
  409. package/build/template/components/TestComponent.d.ts +0 -5
  410. package/build/template/components/TestComponent.d.ts.map +0 -1
  411. package/build/template/components/TestComponent.js +0 -7
  412. package/build/template/components/TestComponent.js.map +0 -1
  413. package/build/template/components/Texts/MinorHeading.js.map +0 -1
  414. package/build/template/components/ThemeToggle.d.ts +0 -3
  415. package/build/template/components/ThemeToggle.d.ts.map +0 -1
  416. package/build/template/components/ThemeToggle.js +0 -9
  417. package/build/template/components/ThemeToggle.js.map +0 -1
  418. package/build/template/components/TypeAnnotation.js.map +0 -1
  419. package/build/template/components/TypeFieldsLinkList.js +0 -9
  420. package/build/template/components/TypeFieldsLinkList.js.map +0 -1
  421. package/build/template/components/TypeIndex.js +0 -17
  422. package/build/template/components/TypeIndex.js.map +0 -1
  423. package/build/template/components/content/$$.d.ts +0 -3
  424. package/build/template/components/content/$$.d.ts.map +0 -1
  425. package/build/template/components/content/$$.js +0 -3
  426. package/build/template/components/content/$$.js.map +0 -1
  427. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts +0 -8
  428. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts.map +0 -1
  429. package/build/template/components/content/GraphQLDocumentWithSchema.js +0 -13
  430. package/build/template/components/content/GraphQLDocumentWithSchema.js.map +0 -1
  431. package/build/template/components/content/GraphQLDocumentWrapper.d.ts +0 -7
  432. package/build/template/components/content/GraphQLDocumentWrapper.d.ts.map +0 -1
  433. package/build/template/components/content/GraphQLDocumentWrapper.js +0 -63
  434. package/build/template/components/content/GraphQLDocumentWrapper.js.map +0 -1
  435. package/build/template/components/graphql/graphql.js +0 -3
  436. package/build/template/components/graphql/graphql.js.map +0 -1
  437. package/build/template/components/graphql/type-kind-icon.js.map +0 -1
  438. package/build/template/components/graphql/type-link.js +0 -11
  439. package/build/template/components/graphql/type-link.js.map +0 -1
  440. package/build/template/components/sidebar/Sidebar.js +0 -11
  441. package/build/template/components/sidebar/Sidebar.js.map +0 -1
  442. package/build/template/components/sidebar/SidebarItem.js.map +0 -1
  443. package/build/template/components/sidebar/ToggleButton.js +0 -5
  444. package/build/template/components/sidebar/ToggleButton.js.map +0 -1
  445. package/build/template/contexts/ThemeContext.d.ts +0 -12
  446. package/build/template/contexts/ThemeContext.d.ts.map +0 -1
  447. package/build/template/contexts/ThemeContext.js +0 -40
  448. package/build/template/contexts/ThemeContext.js.map +0 -1
  449. package/build/template/entry.client.js.map +0 -1
  450. package/build/template/hooks/useClientOnly.d.ts +0 -9
  451. package/build/template/hooks/useClientOnly.d.ts.map +0 -1
  452. package/build/template/hooks/useClientOnly.js +0 -16
  453. package/build/template/hooks/useClientOnly.js.map +0 -1
  454. package/build/template/routes/changelog.js.map +0 -1
  455. package/build/template/routes/index.js.map +0 -1
  456. package/build/template/routes/reference.$type.$field.js.map +0 -1
  457. package/build/template/routes/reference.$type.js.map +0 -1
  458. package/build/template/routes/reference.js.map +0 -1
  459. package/build/template/routes/root.js +0 -138
  460. package/build/template/routes/root.js.map +0 -1
  461. package/build/template/routes.js +0 -5
  462. package/build/template/routes.js.map +0 -1
  463. package/build/template/server/create-page-html-response.d.ts +0 -7
  464. package/build/template/server/create-page-html-response.d.ts.map +0 -1
  465. package/build/template/server/create-page-html-response.js.map +0 -1
  466. package/build/template/server/middleware/page.d.ts +0 -4
  467. package/build/template/server/middleware/page.d.ts.map +0 -1
  468. package/build/template/server/middleware/page.js +0 -15
  469. package/build/template/server/middleware/page.js.map +0 -1
  470. package/build/template/server/middleware/unsupported-assets.d.ts +0 -10
  471. package/build/template/server/middleware/unsupported-assets.d.ts.map +0 -1
  472. package/build/template/server/middleware/unsupported-assets.js +0 -21
  473. package/build/template/server/middleware/unsupported-assets.js.map +0 -1
  474. package/build/template/styles/code-block.css +0 -218
  475. package/src/api/content/$$.ts +0 -6
  476. package/src/api/content/$.test.ts +0 -72
  477. package/src/api/content/$.ts +0 -1
  478. package/src/api/content/metadata.ts +0 -11
  479. package/src/api/content/navbar.test.ts +0 -55
  480. package/src/api/content/navbar.ts +0 -61
  481. package/src/api/content/page.ts +0 -12
  482. package/src/api/content/scan.ts +0 -117
  483. package/src/api/content/sidebar.test.ts +0 -297
  484. package/src/api/content/sidebar.ts +0 -283
  485. package/src/api/content/utils.ts +0 -7
  486. package/src/exports/components.ts +0 -4
  487. package/src/lib/graphql-document/$$.ts +0 -4
  488. package/src/lib/graphql-document/$.test.ts +0 -132
  489. package/src/lib/graphql-document/$.ts +0 -1
  490. package/src/lib/graphql-document/README.md +0 -102
  491. package/src/lib/graphql-document/analysis.ts +0 -415
  492. package/src/lib/graphql-document/components/CopyButton.tsx +0 -76
  493. package/src/lib/graphql-document/components/GraphQLDocument.tsx +0 -262
  494. package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +0 -188
  495. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +0 -70
  496. package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +0 -197
  497. package/src/lib/graphql-document/components/IdentifierLink.tsx +0 -160
  498. package/src/lib/graphql-document/components/graphql-document-styles.ts +0 -167
  499. package/src/lib/graphql-document/components/index.ts +0 -5
  500. package/src/lib/graphql-document/demo.md +0 -155
  501. package/src/lib/graphql-document/example.ts +0 -163
  502. package/src/lib/graphql-document/graphql-document.ts +0 -37
  503. package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +0 -76
  504. package/src/lib/graphql-document/hooks/use-tooltip-state.ts +0 -191
  505. package/src/lib/graphql-document/positioning-simple.test.ts +0 -248
  506. package/src/lib/graphql-document/positioning-simple.ts +0 -260
  507. package/src/lib/graphql-document/schema-context.tsx +0 -20
  508. package/src/lib/graphql-document/schema-integration-example.ts +0 -341
  509. package/src/lib/graphql-document/schema-integration.test.ts +0 -365
  510. package/src/lib/graphql-document/schema-integration.ts +0 -497
  511. package/src/lib/graphql-document/types.ts +0 -129
  512. package/src/template/components/CodeBlockEnhancer.tsx +0 -192
  513. package/src/template/components/HamburgerMenu.tsx +0 -96
  514. package/src/template/components/MDXComponents.tsx +0 -101
  515. package/src/template/components/NotFound.tsx +0 -28
  516. package/src/template/components/TestComponent.tsx +0 -6
  517. package/src/template/components/ThemeToggle.tsx +0 -21
  518. package/src/template/components/content/$$.ts +0 -2
  519. package/src/template/components/content/GraphQLDocumentWithSchema.tsx +0 -13
  520. package/src/template/components/content/GraphQLDocumentWrapper.tsx +0 -89
  521. package/src/template/contexts/ThemeContext.tsx +0 -60
  522. package/src/template/hooks/useClientOnly.ts +0 -21
  523. package/src/template/server/middleware/page.ts +0 -19
  524. package/src/template/server/middleware/unsupported-assets.ts +0 -25
  525. /package/build/lib/{graphql-document → file-router/sidebar}/types.js +0 -0
@@ -1,76 +0,0 @@
1
- /**
2
- * Copy button component for GraphQL documents
3
- */
4
-
5
- import type { React } from '#dep/react/index'
6
- import { React as ReactHooks } from '#dep/react/index'
7
- import { CheckIcon, CopyIcon } from '@radix-ui/react-icons'
8
- import { Button } from '@radix-ui/themes'
9
-
10
- export interface CopyButtonProps {
11
- /** The text to copy */
12
- text: string
13
- /** Optional className */
14
- className?: string
15
- /** Size variant */
16
- size?: '1' | '2' | '3'
17
- }
18
-
19
- /**
20
- * Copy button for GraphQL code blocks
21
- *
22
- * Shows a copy icon that changes to a checkmark when clicked
23
- */
24
- export const CopyButton: React.FC<CopyButtonProps> = ({
25
- text,
26
- className = '',
27
- size = '1',
28
- }) => {
29
- const [copied, setCopied] = ReactHooks.useState(false)
30
- const timeoutRef = ReactHooks.useRef<NodeJS.Timeout | null>(null)
31
-
32
- const handleCopy = ReactHooks.useCallback(async (e: React.MouseEvent) => {
33
- e.preventDefault()
34
- e.stopPropagation()
35
-
36
- try {
37
- await navigator.clipboard.writeText(text)
38
- setCopied(true)
39
-
40
- // Clear any existing timeout
41
- if (timeoutRef.current) {
42
- clearTimeout(timeoutRef.current)
43
- }
44
-
45
- // Reset after 2 seconds
46
- timeoutRef.current = setTimeout(() => {
47
- setCopied(false)
48
- timeoutRef.current = null
49
- }, 2000)
50
- } catch (err) {
51
- console.error('Failed to copy text:', err)
52
- }
53
- }, [text])
54
-
55
- // Cleanup timeout on unmount
56
- ReactHooks.useEffect(() => {
57
- return () => {
58
- if (timeoutRef.current) {
59
- clearTimeout(timeoutRef.current)
60
- }
61
- }
62
- }, [])
63
-
64
- return (
65
- <Button
66
- size={size}
67
- variant='ghost'
68
- className={`graphql-copy-button ${className}`}
69
- onClick={handleCopy}
70
- aria-label={copied ? 'Copied!' : 'Copy code'}
71
- data-copied={copied}
72
- >
73
- {copied ? <CheckIcon width='16' height='16' /> : <CopyIcon width='16' height='16' />}
74
- </Button>
75
- )
76
- }
@@ -1,262 +0,0 @@
1
- import type { React } from '#dep/react/index'
2
- import { React as ReactHooks } from '#dep/react/index'
3
- import type { GraphQLSchema } from 'graphql'
4
- import { useNavigate } from 'react-router'
5
- import { analyze } from '../analysis.ts'
6
- import { useTooltipState } from '../hooks/use-tooltip-state.ts'
7
- import { createSimplePositionCalculator } from '../positioning-simple.ts'
8
- import { createPolenSchemaResolver } from '../schema-integration.ts'
9
- import type { Identifier } from '../types.ts'
10
- import { CopyButton } from './CopyButton.tsx'
11
- import { graphqlDocumentStyles } from './graphql-document-styles.ts'
12
- import { IdentifierLink } from './IdentifierLink.tsx'
13
-
14
- /**
15
- * Options for the GraphQL document component
16
- */
17
- export interface GraphQLDocumentOptions {
18
- /** Whether to show debug overlays */
19
- debug?: boolean
20
- /** Whether to disable interactive features */
21
- plain?: boolean
22
- /** Custom navigation handler */
23
- onNavigate?: (url: string) => void
24
- /** Whether to validate against schema */
25
- validate?: boolean
26
- /** Custom class name for the container */
27
- className?: string
28
- }
29
-
30
- /**
31
- * Props for the GraphQL document component
32
- */
33
- export interface GraphQLDocumentProps {
34
- /** The GraphQL document source code */
35
- children: string
36
- /** GraphQL schema for validation and linking */
37
- schema?: GraphQLSchema
38
- /** Component options */
39
- options?: GraphQLDocumentOptions
40
- /** Pre-rendered Shiki HTML (from build time) */
41
- highlightedHtml?: string
42
- }
43
-
44
- /**
45
- * Interactive GraphQL document component
46
- *
47
- * Transforms static GraphQL code blocks into interactive documentation
48
- * with hyperlinks, tooltips, and schema validation.
49
- */
50
- export const GraphQLDocument: React.FC<GraphQLDocumentProps> = ({
51
- children,
52
- schema,
53
- options = {},
54
- highlightedHtml,
55
- }) => {
56
- const {
57
- debug = false,
58
- plain = false,
59
- onNavigate,
60
- validate = true,
61
- className = '',
62
- } = options
63
-
64
- const navigate = useNavigate()
65
- const handleNavigate = onNavigate || ((url: string) => navigate(url))
66
-
67
- // Container ref for positioning calculations
68
- const containerRef = ReactHooks.useRef<HTMLDivElement>(null)
69
- const [isReady, setIsReady] = ReactHooks.useState(false)
70
-
71
- // Use tooltip state management
72
- const tooltipState = useTooltipState({
73
- showDelay: 300,
74
- hideDelay: 200, // Increased for smoother experience
75
- allowMultiplePins: true,
76
- })
77
-
78
- // Handle escape key to unpin all
79
- ReactHooks.useEffect(() => {
80
- const handleKeyDown = (event: KeyboardEvent) => {
81
- if (event.key === 'Escape') {
82
- tooltipState.unpinAll()
83
- }
84
- }
85
-
86
- document.addEventListener('keydown', handleKeyDown)
87
- return () => {
88
- document.removeEventListener('keydown', handleKeyDown)
89
- }
90
- }, [tooltipState])
91
-
92
- // Layer 1: Parse and analyze
93
- const analysisResult = ReactHooks.useMemo(() => {
94
- if (plain) return null
95
- const result = analyze(children, { schema })
96
- // Debug logging handled by debug prop
97
- return result
98
- }, [children, plain, schema, debug])
99
-
100
- // Layer 2: Schema resolution
101
- const resolver = ReactHooks.useMemo(() => {
102
- if (!schema || plain) return null
103
- return createPolenSchemaResolver(schema)
104
- }, [schema, plain])
105
-
106
- const resolutions = ReactHooks.useMemo(() => {
107
- if (!analysisResult || !resolver) {
108
- return new Map()
109
- }
110
-
111
- const results = new Map()
112
- for (const [position, identifier] of analysisResult.identifiers.byPosition) {
113
- const resolution = resolver.resolveIdentifier(identifier)
114
- if (resolution) {
115
- results.set(position, resolution)
116
- }
117
- }
118
- return results
119
- }, [analysisResult, resolver])
120
-
121
- // Layer 3: Position calculation
122
- const positionCalculator = ReactHooks.useMemo(() => {
123
- if (plain) return null
124
- return createSimplePositionCalculator()
125
- }, [plain])
126
-
127
- const [positions, setPositions] = ReactHooks.useState<Map<string, { position: any; identifier: Identifier }>>(
128
- new Map(),
129
- )
130
-
131
- // Prepare code block and calculate positions after render
132
- ReactHooks.useEffect(() => {
133
- if (!containerRef.current || !analysisResult || !positionCalculator || plain) {
134
- // Skip position calculation - debug handled by debug prop
135
- return
136
- }
137
-
138
- // Get the code element within the container
139
- const codeElement = containerRef.current.querySelector('pre.shiki code')
140
- || containerRef.current.querySelector('pre code')
141
- || containerRef.current.querySelector('code')
142
- if (!codeElement) {
143
- // No code element found - skip
144
- return
145
- }
146
-
147
- // Prepare the code block (wrap identifiers)
148
- const identifiers = Array.from(analysisResult.identifiers.byPosition.values())
149
- // Prepare code block with identifiers
150
- positionCalculator.prepareCodeBlock(codeElement as Element, identifiers)
151
-
152
- // Get positions after DOM update
153
- requestAnimationFrame(() => {
154
- // Pass containerRef.current as the reference element for positioning
155
- if (containerRef.current) {
156
- const newPositions = positionCalculator.getIdentifierPositions(codeElement as Element, containerRef.current)
157
- // Position calculation complete
158
- setPositions(newPositions)
159
- setIsReady(true)
160
- }
161
- })
162
- }, [analysisResult, positionCalculator, plain, highlightedHtml])
163
-
164
- // Handle resize events with debouncing
165
- ReactHooks.useEffect(() => {
166
- if (!containerRef.current || !positionCalculator || plain) return
167
-
168
- let resizeTimer: NodeJS.Timeout
169
- const handleResize = () => {
170
- clearTimeout(resizeTimer)
171
- resizeTimer = setTimeout(() => {
172
- const codeElement = containerRef.current?.querySelector('pre.shiki code')
173
- || containerRef.current?.querySelector('pre code')
174
- || containerRef.current?.querySelector('code')
175
- if (codeElement && containerRef.current) {
176
- const newPositions = positionCalculator.getIdentifierPositions(codeElement as Element, containerRef.current)
177
- setPositions(newPositions)
178
- }
179
- }, 100) // Debounce resize events
180
- }
181
-
182
- window.addEventListener('resize', handleResize)
183
- return () => {
184
- clearTimeout(resizeTimer)
185
- window.removeEventListener('resize', handleResize)
186
- }
187
- }, [positionCalculator, plain])
188
-
189
- // Validation errors
190
- const validationErrors = ReactHooks.useMemo(() => {
191
- if (!validate || !analysisResult || !schema) return []
192
- return analysisResult.errors
193
- }, [validate, analysisResult, schema])
194
-
195
- return (
196
- <>
197
- <style dangerouslySetInnerHTML={{ __html: graphqlDocumentStyles }} />
198
- <div
199
- ref={containerRef}
200
- className={`graphql-document ${className} ${debug ? 'graphql-debug-mode' : ''} ${
201
- !isReady && !plain ? 'graphql-loading' : ''
202
- }`}
203
- >
204
- {/* Base syntax highlighting */}
205
- {highlightedHtml ? <div dangerouslySetInnerHTML={{ __html: highlightedHtml }} /> : (
206
- <pre className='shiki'>
207
- <code>{children}</code>
208
- </pre>
209
- )}
210
-
211
- {/* Copy button */}
212
- {!plain && (
213
- <CopyButton
214
- text={children}
215
- className='graphql-document-copy'
216
- size='2'
217
- />
218
- )}
219
-
220
- {/* Interactive overlay layer */}
221
- {!plain && isReady && (
222
- <div className='graphql-interaction-layer' style={{ pointerEvents: 'none' }}>
223
- {Array.from(positions.entries()).map(([id, { position, identifier }]) => {
224
- const startPos = identifier.position.start
225
- const resolution = resolutions.get(startPos)
226
-
227
- if (!resolution) return null
228
-
229
- return (
230
- <IdentifierLink
231
- key={id}
232
- identifier={identifier}
233
- resolution={resolution}
234
- position={position}
235
- onNavigate={handleNavigate}
236
- debug={debug}
237
- isOpen={tooltipState.isOpen(id)}
238
- isPinned={tooltipState.isPinned(id)}
239
- onHoverStart={() => tooltipState.onHoverStart(id)}
240
- onHoverEnd={() => tooltipState.onHoverEnd(id)}
241
- onTogglePin={() => tooltipState.onTogglePin(id)}
242
- onTooltipHover={() => tooltipState.onTooltipHover(id)}
243
- />
244
- )
245
- })}
246
- </div>
247
- )}
248
-
249
- {/* Validation errors overlay */}
250
- {validationErrors.length > 0 && (
251
- <div className='graphql-validation-errors'>
252
- {validationErrors.map((error: any, index: number) => (
253
- <div key={index} className='graphql-error'>
254
- {error.message}
255
- </div>
256
- ))}
257
- </div>
258
- )}
259
- </div>
260
- </>
261
- )
262
- }
@@ -1,188 +0,0 @@
1
- /**
2
- * Unit tests for GraphQL Document component logic
3
- *
4
- * Tests the core functionality without rendering React components
5
- */
6
-
7
- import { buildSchema } from 'graphql'
8
- import { describe, expect, it } from 'vitest'
9
- import { analyze } from '../analysis.ts'
10
- import { createSimplePositionCalculator } from '../positioning-simple.ts'
11
- import { analyzeWithSchema, createPolenSchemaResolver } from '../schema-integration.ts'
12
-
13
- describe('GraphQLDocument logic', () => {
14
- const testSchema = buildSchema(`
15
- type Query {
16
- user(id: ID!): User
17
- users: [User!]!
18
- }
19
-
20
- type User {
21
- id: ID!
22
- name: String!
23
- email: String!
24
- posts: [Post!]!
25
- }
26
-
27
- type Post {
28
- id: ID!
29
- title: String!
30
- content: String!
31
- author: User!
32
- }
33
- `)
34
-
35
- const testQuery = `
36
- query GetUser($id: ID!) {
37
- user(id: $id) {
38
- id
39
- name
40
- email
41
- posts {
42
- title
43
- }
44
- }
45
- }`
46
-
47
- describe('analysis integration', () => {
48
- it('should analyze GraphQL document and extract identifiers', () => {
49
- const result = analyze(testQuery)
50
-
51
- expect(result.identifiers.byKind.get('Field')).toBeDefined()
52
- expect(result.identifiers.byKind.get('Variable')).toBeDefined()
53
- expect(result.identifiers.byKind.get('Type')).toBeDefined()
54
-
55
- // Check specific identifiers
56
- const fields = result.identifiers.byKind.get('Field') || []
57
- const fieldNames = fields.map(f => f.name)
58
- expect(fieldNames).toContain('user')
59
- expect(fieldNames).toContain('id')
60
- expect(fieldNames).toContain('name')
61
- expect(fieldNames).toContain('email')
62
- expect(fieldNames).toContain('posts')
63
- expect(fieldNames).toContain('title')
64
- })
65
-
66
- it('should handle empty document', () => {
67
- const result = analyze('')
68
- expect(result.identifiers.byPosition.size).toBe(0)
69
- // Empty string is technically parseable as an empty document
70
- expect(result.ast).toBeDefined()
71
- })
72
- })
73
-
74
- describe('schema resolution integration', () => {
75
- it('should resolve identifiers against schema', () => {
76
- // Use analyzeWithSchema for proper schema-aware analysis
77
- const { analysis, resolutions } = analyzeWithSchema(testQuery, testSchema)
78
-
79
- // Check that analysis found identifiers
80
- expect(analysis.identifiers.all.length).toBeGreaterThan(0)
81
-
82
- // Check that we have resolutions
83
- expect(resolutions.size).toBeGreaterThan(0)
84
-
85
- // Check that analysis is valid
86
- expect(analysis.isValid).toBe(true)
87
-
88
- // Basic check that resolutions were created
89
- const hasValidResolutions = Array.from(resolutions.values()).some(
90
- res => res.exists && res.referenceUrl.includes('/reference/'),
91
- )
92
- expect(hasValidResolutions).toBe(true)
93
- })
94
-
95
- it('should detect non-existent fields', () => {
96
- const invalidQuery = `query { nonExistentField }`
97
- const result = analyze(invalidQuery)
98
- const resolver = createPolenSchemaResolver(testSchema)
99
-
100
- const field = Array.from(result.identifiers.byPosition.values())[0]
101
- const resolution = resolver.resolveIdentifier(field!)
102
-
103
- expect(resolution).toBeDefined()
104
- expect(resolution!.exists).toBe(false)
105
- })
106
- })
107
-
108
- describe('position calculation', () => {
109
- it('should create position calculator', () => {
110
- const calculator = createSimplePositionCalculator()
111
- expect(calculator).toBeDefined()
112
- expect(calculator.prepareCodeBlock).toBeDefined()
113
- expect(calculator.getIdentifierPositions).toBeDefined()
114
- })
115
- })
116
-
117
- describe('options handling', () => {
118
- it('should skip analysis when plain option is true', () => {
119
- const options = { plain: true }
120
- // When plain is true, no analysis should be performed
121
- expect(options.plain).toBe(true)
122
- })
123
-
124
- it('should enable debug mode', () => {
125
- const options = { debug: true }
126
- expect(options.debug).toBe(true)
127
- })
128
-
129
- it('should handle custom navigation', () => {
130
- const onNavigate = (url: string) => {
131
- expect(url).toContain('/reference/')
132
- }
133
- const options = { onNavigate }
134
- expect(options.onNavigate).toBeDefined()
135
- })
136
-
137
- it('should handle validation option', () => {
138
- const options = { validate: true }
139
- expect(options.validate).toBe(true)
140
- })
141
-
142
- it('should handle custom className', () => {
143
- const options = { className: 'custom-graphql-block' }
144
- expect(options.className).toBe('custom-graphql-block')
145
- })
146
- })
147
-
148
- describe('validation', () => {
149
- it('should validate valid queries', () => {
150
- const { analysis, resolutions } = analyzeWithSchema(testQuery, testSchema)
151
-
152
- // Check that validation passed
153
- expect(analysis.isValid).toBe(true)
154
-
155
- // Check that we have resolutions
156
- expect(resolutions.size).toBeGreaterThan(0)
157
-
158
- // Check that the user field resolved correctly
159
- const userResolution = Array.from(resolutions.values()).find(
160
- res => res.referenceUrl.includes('query') && res.referenceUrl.includes('user'),
161
- )
162
-
163
- if (userResolution) {
164
- expect(userResolution.exists).toBe(true)
165
- }
166
- })
167
-
168
- it('should detect validation errors', () => {
169
- const invalidQuery = `
170
- query {
171
- user {
172
- nonExistentField
173
- }
174
- }
175
- `
176
-
177
- const result = analyze(invalidQuery)
178
- const resolver = createPolenSchemaResolver(testSchema)
179
-
180
- const resolutions = Array.from(result.identifiers.byPosition.values())
181
- .map(id => ({ id, resolution: resolver.resolveIdentifier(id) }))
182
-
183
- const invalidField = resolutions.find(r => r.id.name === 'nonExistentField')
184
- expect(invalidField).toBeDefined()
185
- expect(invalidField!.resolution!.exists).toBe(false)
186
- })
187
- })
188
- })
@@ -1,70 +0,0 @@
1
- import type { React } from '#dep/react/index'
2
- import { useEffect, useState } from 'react'
3
- import { useGraphQLSchema } from '../schema-context.tsx'
4
- import { GraphQLDocument, type GraphQLDocumentProps } from './GraphQLDocument.tsx'
5
-
6
- // Cache for highlighter
7
- let highlighterCache: any = null
8
-
9
- /**
10
- * GraphQL Document component that uses the schema context and handles syntax highlighting
11
- */
12
- export const GraphQLDocumentWithSchema: React.FC<Omit<GraphQLDocumentProps, 'schema' | 'highlightedHtml'>> = (
13
- props,
14
- ) => {
15
- const schema = useGraphQLSchema()
16
- const [mounted, setMounted] = useState(false)
17
- const [highlightedHtml, setHighlightedHtml] = useState<string | null>(null)
18
-
19
- useEffect(() => {
20
- setMounted(true)
21
-
22
- const loadHighlighter = async () => {
23
- try {
24
- // Load highlighter if not cached
25
- if (!highlighterCache) {
26
- const { highlightCode } = await import('#lib/shiki/index')
27
- highlighterCache = highlightCode
28
- }
29
-
30
- // Generate highlighted HTML
31
- const highlighted = await highlighterCache({
32
- code: props['children'],
33
- lang: 'graphql',
34
- theme: 'light',
35
- })
36
-
37
- setHighlightedHtml(highlighted)
38
- } catch (error) {
39
- console.error('Failed to load GraphQL document highlighter:', error)
40
- }
41
- }
42
-
43
- loadHighlighter()
44
- }, [props['children']])
45
-
46
- // Always render the same structure to avoid hydration issues
47
- const isInteractive = mounted && schema && highlightedHtml
48
-
49
- if (!isInteractive) {
50
- // Static fallback that looks like Shiki output
51
- return (
52
- <div className='graphql-document graphql-document-static' data-testid='graphql-document'>
53
- <pre
54
- className='shiki shiki-themes github-light tokyo-night'
55
- style={{ backgroundColor: 'var(--shiki-light-bg)', color: 'var(--shiki-light)' }}
56
- >
57
- <code className="language-graphql">{props['children']}</code>
58
- </pre>
59
- </div>
60
- )
61
- }
62
-
63
- return (
64
- <GraphQLDocument
65
- {...props}
66
- schema={schema}
67
- highlightedHtml={highlightedHtml}
68
- />
69
- )
70
- }