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,341 +0,0 @@
1
- /**
2
- * Example usage of Schema Integration (Layer 2)
3
- *
4
- * Demonstrates how the schema integration layer resolves GraphQL identifiers
5
- * against actual schemas, extracts documentation, and generates reference URLs.
6
- */
7
-
8
- import { buildSchema } from 'graphql'
9
- import { analyzeWithSchema, createPolenSchemaResolver } from './schema-integration.ts'
10
-
11
- // Example schema - typical GraphQL API
12
- const pokemonSchema = buildSchema(`
13
- """
14
- A Pokémon character
15
- """
16
- type Pokemon {
17
- """
18
- The Pokémon's unique identifier
19
- """
20
- id: ID!
21
-
22
- """
23
- The Pokémon's name
24
- """
25
- name: String!
26
-
27
- """
28
- The Pokémon's type (e.g., Electric, Fire, Water)
29
- """
30
- type: String!
31
-
32
- """
33
- The Pokémon's abilities
34
- """
35
- abilities(
36
- """
37
- Maximum number of abilities to return
38
- """
39
- first: Int = 5
40
- ): [Ability!]!
41
-
42
- """
43
- @deprecated Use evolutionChain instead
44
- """
45
- evolutions: [Pokemon!] @deprecated(reason: "Use evolutionChain instead")
46
- }
47
-
48
- """
49
- A special ability that Pokémon can have
50
- """
51
- type Ability {
52
- id: ID!
53
- name: String!
54
- description: String
55
- isHidden: Boolean!
56
- }
57
-
58
- type Query {
59
- """
60
- Get a Pokémon by ID
61
- """
62
- pokemon(id: ID!): Pokemon
63
-
64
- """
65
- Search for Pokémon by name
66
- """
67
- searchPokemon(query: String!): [Pokemon!]!
68
- }
69
- `)
70
-
71
- // Example GraphQL query with various constructs
72
- const exampleQuery = `
73
- query GetPokemonDetails($pokemonId: ID!, $abilityLimit: Int = 3) {
74
- pokemon(id: $pokemonId) {
75
- id
76
- name
77
- type
78
- abilities(first: $abilityLimit) {
79
- name
80
- description
81
- isHidden
82
- }
83
- evolutions # This field is deprecated
84
- invalidField # This field doesn't exist
85
- }
86
- }
87
- `
88
-
89
- /**
90
- * Demonstrate basic schema resolution
91
- */
92
- export const demonstrateSchemaResolution = () => {
93
- console.log('🔗 Schema Integration Demo\n')
94
-
95
- const resolver = createPolenSchemaResolver(pokemonSchema)
96
-
97
- // Example identifiers (normally extracted from AST)
98
- const testIdentifiers = [
99
- {
100
- name: 'Pokemon',
101
- kind: 'Type' as const,
102
- position: { start: 50, end: 57, line: 3, column: 5 },
103
- schemaPath: ['Pokemon'],
104
- context: { selectionPath: [] },
105
- },
106
- {
107
- name: 'name',
108
- kind: 'Field' as const,
109
- position: { start: 75, end: 79, line: 4, column: 7 },
110
- parentType: 'Pokemon',
111
- schemaPath: ['Pokemon', 'name'],
112
- context: { selectionPath: ['pokemon', 'name'] },
113
- },
114
- {
115
- name: 'evolutions',
116
- kind: 'Field' as const,
117
- position: { start: 150, end: 160, line: 9, column: 7 },
118
- parentType: 'Pokemon',
119
- schemaPath: ['Pokemon', 'evolutions'],
120
- context: { selectionPath: ['pokemon', 'evolutions'] },
121
- },
122
- {
123
- name: 'first',
124
- kind: 'Argument' as const,
125
- position: { start: 120, end: 125, line: 6, column: 20 },
126
- parentType: 'Pokemon',
127
- schemaPath: ['Pokemon', 'abilities', 'first'],
128
- context: { selectionPath: ['pokemon', 'abilities'] },
129
- },
130
- ]
131
-
132
- console.log('📋 Identifier Resolutions:\n')
133
-
134
- for (const identifier of testIdentifiers) {
135
- const resolution = resolver.resolveIdentifier(identifier)
136
- if (!resolution) continue
137
-
138
- console.log(`🏷️ ${identifier.kind}: ${identifier.name}`)
139
- console.log(` ✅ Exists: ${resolution.exists}`)
140
- console.log(` 🔗 URL: ${resolution.referenceUrl}`)
141
-
142
- if (resolution.documentation) {
143
- console.log(` 📝 Type: ${resolution.documentation.typeInfo}`)
144
- if (resolution.documentation.description) {
145
- console.log(` 💬 Description: ${resolution.documentation.description}`)
146
- }
147
- if (resolution.documentation.defaultValue) {
148
- console.log(` 🎯 Default: ${resolution.documentation.defaultValue}`)
149
- }
150
- }
151
-
152
- if (resolution.deprecated) {
153
- console.log(` ⚠️ DEPRECATED: ${resolution.deprecated.reason}`)
154
- }
155
-
156
- console.log()
157
- }
158
- }
159
-
160
- /**
161
- * Demonstrate full schema-aware analysis
162
- */
163
- export const demonstrateSchemaAwareAnalysis = () => {
164
- console.log('🔍 Schema-Aware Analysis\n')
165
-
166
- const result = analyzeWithSchema(exampleQuery, pokemonSchema)
167
-
168
- console.log(`📊 Analysis Summary:`)
169
- console.log(` • Valid GraphQL: ${result.analysis.isValid}`)
170
- console.log(` • Total identifiers: ${result.analysis.identifiers.all.length}`)
171
- console.log(` • Schema resolutions: ${result.resolutions.size}`)
172
- console.log(` • Schema errors: ${result.schemaErrors.length}\n`)
173
-
174
- // Show validation errors
175
- if (result.schemaErrors.length > 0) {
176
- console.log('🚨 Schema Validation Issues:\n')
177
- for (const error of result.schemaErrors) {
178
- const emoji = error.severity === 'error' ? '❌' : '⚠️'
179
- const pos = `${error.identifier.position.line}:${error.identifier.position.column}`
180
- console.log(` ${emoji} ${error.message} @ ${pos}`)
181
- }
182
- console.log()
183
- }
184
-
185
- // Show successful resolutions with hyperlink potential
186
- console.log('🔗 Generated Hyperlinks:\n')
187
- let linkCount = 0
188
-
189
- for (const [key, resolution] of result.resolutions) {
190
- if (resolution.exists && linkCount < 8) { // Show first 8 successful resolutions
191
- const identifier = result.analysis.identifiers.all.find(id =>
192
- key.startsWith(`${id.position.start}-${id.name}-${id.kind}`)
193
- )
194
-
195
- if (identifier) {
196
- const pos = `${identifier.position.line}:${identifier.position.column}`
197
- console.log(` 📍 ${identifier.name} (${identifier.kind}) → ${resolution.referenceUrl}`)
198
-
199
- if (resolution.documentation?.description) {
200
- const shortDesc = resolution.documentation.description.length > 50
201
- ? resolution.documentation.description.substring(0, 50) + '...'
202
- : resolution.documentation.description
203
- console.log(` 💬 "${shortDesc}"`)
204
- }
205
-
206
- linkCount++
207
- }
208
- }
209
- }
210
- }
211
-
212
- /**
213
- * Demonstrate tooltip data extraction
214
- */
215
- export const demonstrateTooltipData = () => {
216
- console.log('\n💬 Tooltip Data Extraction\n')
217
-
218
- const resolver = createPolenSchemaResolver(pokemonSchema)
219
-
220
- // Simulate tooltip hover scenarios
221
- const tooltipExamples = [
222
- ['Pokemon'],
223
- ['Pokemon', 'name'],
224
- ['Pokemon', 'abilities'],
225
- ['Pokemon', 'abilities', 'first'],
226
- ['Ability', 'isHidden'],
227
- ]
228
-
229
- for (const schemaPath of tooltipExamples) {
230
- const docs = resolver.getDocumentation(schemaPath)
231
- if (docs) {
232
- const pathStr = schemaPath.join(' → ')
233
- console.log(`🏷️ ${pathStr}`)
234
- console.log(` 📋 Type: ${docs.typeInfo}`)
235
-
236
- if (docs.description) {
237
- console.log(` 💬 Description: ${docs.description}`)
238
- }
239
-
240
- if (docs.defaultValue) {
241
- console.log(` 🎯 Default: ${docs.defaultValue}`)
242
- }
243
-
244
- if (docs.deprecated) {
245
- console.log(` ⚠️ DEPRECATED: ${docs.deprecated.reason}`)
246
- }
247
-
248
- console.log()
249
- }
250
- }
251
- }
252
-
253
- /**
254
- * Demonstrate URL generation customization
255
- */
256
- export const demonstrateCustomURLGeneration = () => {
257
- console.log('🛠️ Custom URL Generation\n')
258
-
259
- // Different resolver configurations
260
- const configurations = [
261
- { name: 'Default', config: {} },
262
- { name: 'Custom Base Path', config: { basePath: '/docs/api' } },
263
- { name: 'No Fragments', config: { includeFragments: false } },
264
- { name: 'Custom + No Fragments', config: { basePath: '/schema', includeFragments: false } },
265
- ]
266
-
267
- const testPaths = [
268
- ['Pokemon'],
269
- ['Pokemon', 'name'],
270
- ['Pokemon', 'abilities', 'first'],
271
- ]
272
-
273
- for (const { name, config } of configurations) {
274
- console.log(`📋 ${name}:`)
275
- const resolver = createPolenSchemaResolver(pokemonSchema, config)
276
-
277
- for (const path of testPaths) {
278
- const url = resolver.generateReferenceLink(path)
279
- console.log(` ${path.join(' → ')} → ${url}`)
280
- }
281
- console.log()
282
- }
283
- }
284
-
285
- /**
286
- * Show integration with Polen's reference system
287
- */
288
- export const demonstratePolenIntegration = () => {
289
- console.log('🏗️ Polen Integration Preview\n')
290
-
291
- // This demonstrates how the schema integration connects with Polen's existing systems
292
- const result = analyzeWithSchema(exampleQuery, pokemonSchema, {
293
- basePath: '/reference', // Polen's reference page base
294
- includeFragments: true, // Enable field anchors
295
- })
296
-
297
- console.log('🔄 How this integrates with Polen:\n')
298
-
299
- console.log('1. 📋 Schema Loading:')
300
- console.log(" • Uses PROJECT_DATA.schema from Polen's build system")
301
- console.log(' • Leverages existing schema processing pipeline')
302
- console.log()
303
-
304
- console.log('2. 🔗 Reference Links:')
305
- console.log(" • Generates URLs matching Polen's /reference/* structure")
306
- console.log(' • Works with existing TypeIndex and sidebar system')
307
- console.log()
308
-
309
- console.log('3. 💬 Documentation:')
310
- console.log(' • Extracts descriptions for hover tooltips')
311
- console.log(' • Provides type signatures for context')
312
- console.log(' • Detects deprecation warnings')
313
- console.log()
314
-
315
- console.log('4. ✅ Validation:')
316
- console.log(' • Build-time validation against actual schema')
317
- console.log(' • Catches typos and invalid references')
318
- console.log(' • Reports deprecation usage')
319
- console.log()
320
-
321
- // Show some example integrations
322
- const validFields = Array.from(result.resolutions.values())
323
- .filter(r => r.exists)
324
- .slice(0, 3)
325
-
326
- if (validFields.length > 0) {
327
- console.log('📋 Example Reference Links:')
328
- for (const resolution of validFields) {
329
- console.log(` • ${resolution.referenceUrl}`)
330
- }
331
- }
332
- }
333
-
334
- // Run examples if executed directly
335
- if (import.meta.url === `file://${process.argv[1]}`) {
336
- demonstrateSchemaResolution()
337
- demonstrateSchemaAwareAnalysis()
338
- demonstrateTooltipData()
339
- demonstrateCustomURLGeneration()
340
- demonstratePolenIntegration()
341
- }
@@ -1,365 +0,0 @@
1
- import { buildSchema } from 'graphql'
2
- import { describe, expect, it } from 'vitest'
3
- import { analyzeWithSchema, createPolenSchemaResolver } from './schema-integration.ts'
4
-
5
- // Test schema
6
- const testSchema = buildSchema(`
7
- """
8
- A user in the system
9
- """
10
- type User {
11
- """
12
- The user's unique identifier
13
- """
14
- id: ID!
15
-
16
- """
17
- The user's full name
18
- """
19
- name: String!
20
-
21
- """
22
- The user's email address
23
- """
24
- email: String!
25
-
26
- """
27
- User's posts
28
- """
29
- posts(
30
- """
31
- Maximum number of posts to return
32
- """
33
- first: Int = 10
34
-
35
- """
36
- Filter posts after this cursor
37
- """
38
- after: String
39
- ): [Post!]!
40
-
41
- """
42
- @deprecated Use profile.avatar instead
43
- """
44
- avatar: String @deprecated(reason: "Use profile.avatar instead")
45
- }
46
-
47
- """
48
- A blog post
49
- """
50
- type Post {
51
- id: ID!
52
- title: String!
53
- content: String!
54
- author: User!
55
- }
56
-
57
- """
58
- Input for creating a user
59
- """
60
- input CreateUserInput {
61
- name: String!
62
- email: String!
63
- }
64
-
65
- type Query {
66
- """
67
- Get a user by ID
68
- """
69
- user(id: ID!): User
70
-
71
- """
72
- Search for users
73
- """
74
- users(query: String!): [User!]!
75
- }
76
-
77
- type Mutation {
78
- """
79
- Create a new user
80
- """
81
- createUser(input: CreateUserInput!): User!
82
- }
83
-
84
- """
85
- Custom directive for validation
86
- """
87
- directive @validate(pattern: String!) on FIELD_DEFINITION | INPUT_FIELD_DEFINITION
88
- `)
89
-
90
- describe('Schema Integration', () => {
91
- describe('PolenSchemaResolver', () => {
92
- const resolver = createPolenSchemaResolver(testSchema)
93
-
94
- describe('Type Resolution', () => {
95
- it('should resolve existing types', () => {
96
- const identifier = {
97
- name: 'User',
98
- kind: 'Type' as const,
99
- position: { start: 0, end: 4, line: 1, column: 1 },
100
- schemaPath: ['User'],
101
- context: { selectionPath: [] },
102
- }
103
-
104
- const resolution = resolver.resolveIdentifier(identifier)
105
-
106
- expect(resolution).toBeDefined()
107
- expect(resolution!.exists).toBe(true)
108
- expect(resolution!.referenceUrl).toBe('/reference/User')
109
- expect(resolution!.documentation?.description).toContain('A user in the system')
110
- expect(resolution!.documentation?.typeInfo).toBe('User')
111
- })
112
-
113
- it('should handle non-existent types', () => {
114
- const identifier = {
115
- name: 'NonExistentType',
116
- kind: 'Type' as const,
117
- position: { start: 0, end: 15, line: 1, column: 1 },
118
- schemaPath: ['NonExistentType'],
119
- context: { selectionPath: [] },
120
- }
121
-
122
- const resolution = resolver.resolveIdentifier(identifier)
123
-
124
- expect(resolution).toBeDefined()
125
- expect(resolution!.exists).toBe(false)
126
- expect(resolution!.referenceUrl).toBe('/reference/NonExistentType')
127
- expect(resolution!.documentation).toBeUndefined()
128
- })
129
- })
130
-
131
- describe('Field Resolution', () => {
132
- it('should resolve existing fields', () => {
133
- const identifier = {
134
- name: 'name',
135
- kind: 'Field' as const,
136
- position: { start: 0, end: 4, line: 1, column: 1 },
137
- parentType: 'User',
138
- schemaPath: ['User', 'name'],
139
- context: { selectionPath: ['name'] },
140
- }
141
-
142
- const resolution = resolver.resolveIdentifier(identifier)
143
-
144
- expect(resolution).toBeDefined()
145
- expect(resolution!.exists).toBe(true)
146
- expect(resolution!.referenceUrl).toBe('/reference/User#name')
147
- expect(resolution!.documentation?.description).toContain("The user's full name")
148
- expect(resolution!.documentation?.typeInfo).toBe('String!')
149
- })
150
-
151
- it('should detect deprecated fields', () => {
152
- const identifier = {
153
- name: 'avatar',
154
- kind: 'Field' as const,
155
- position: { start: 0, end: 6, line: 1, column: 1 },
156
- parentType: 'User',
157
- schemaPath: ['User', 'avatar'],
158
- context: { selectionPath: ['avatar'] },
159
- }
160
-
161
- const resolution = resolver.resolveIdentifier(identifier)
162
-
163
- expect(resolution).toBeDefined()
164
- expect(resolution!.exists).toBe(true)
165
- expect(resolution!.deprecated).toBeDefined()
166
- expect(resolution!.deprecated!.reason).toBe('Use profile.avatar instead')
167
- })
168
-
169
- it('should handle non-existent fields', () => {
170
- const identifier = {
171
- name: 'nonExistentField',
172
- kind: 'Field' as const,
173
- position: { start: 0, end: 16, line: 1, column: 1 },
174
- parentType: 'User',
175
- schemaPath: ['User', 'nonExistentField'],
176
- context: { selectionPath: ['nonExistentField'] },
177
- }
178
-
179
- const resolution = resolver.resolveIdentifier(identifier)
180
-
181
- expect(resolution).toBeDefined()
182
- expect(resolution!.exists).toBe(false)
183
- expect(resolution!.referenceUrl).toBe('/reference/User#nonExistentField')
184
- })
185
- })
186
-
187
- describe('Argument Resolution', () => {
188
- it('should resolve field arguments', () => {
189
- const identifier = {
190
- name: 'first',
191
- kind: 'Argument' as const,
192
- position: { start: 0, end: 5, line: 1, column: 1 },
193
- parentType: 'User',
194
- schemaPath: ['User', 'posts', 'first'],
195
- context: { selectionPath: ['posts'] },
196
- }
197
-
198
- const resolution = resolver.resolveIdentifier(identifier)
199
-
200
- expect(resolution).toBeDefined()
201
- expect(resolution!.exists).toBe(true)
202
- expect(resolution!.referenceUrl).toBe('/reference/User#posts-first')
203
- expect(resolution!.documentation?.description).toContain('Maximum number of posts')
204
- expect(resolution!.documentation?.typeInfo).toBe('Int')
205
- expect(resolution!.documentation?.defaultValue).toBe('10')
206
- })
207
- })
208
-
209
- describe('Variable Resolution', () => {
210
- it('should handle variables', () => {
211
- const identifier = {
212
- name: 'id',
213
- kind: 'Variable' as const,
214
- position: { start: 0, end: 2, line: 1, column: 1 },
215
- schemaPath: ['id'],
216
- context: { selectionPath: [] },
217
- }
218
-
219
- const resolution = resolver.resolveIdentifier(identifier)
220
-
221
- expect(resolution).toBeDefined()
222
- expect(resolution!.exists).toBe(true)
223
- expect(resolution!.referenceUrl).toBe('/reference#variables')
224
- expect(resolution!.documentation?.typeInfo).toBe('Variable')
225
- expect(resolution!.documentation?.description).toBe('Query variable: $id')
226
- })
227
- })
228
-
229
- describe('Directive Resolution', () => {
230
- it('should resolve directives', () => {
231
- const identifier = {
232
- name: 'validate',
233
- kind: 'Directive' as const,
234
- position: { start: 0, end: 8, line: 1, column: 1 },
235
- schemaPath: ['validate'],
236
- context: { selectionPath: [] },
237
- }
238
-
239
- const resolution = resolver.resolveIdentifier(identifier)
240
-
241
- expect(resolution).toBeDefined()
242
- expect(resolution!.exists).toBe(true)
243
- expect(resolution!.referenceUrl).toBe('/reference/directives#validate')
244
- expect(resolution!.documentation?.description).toContain('Custom directive for validation')
245
- })
246
- })
247
-
248
- describe('URL Generation', () => {
249
- it('should generate correct URLs with custom base path', () => {
250
- const customResolver = createPolenSchemaResolver(testSchema, {
251
- basePath: '/docs/schema',
252
- })
253
-
254
- expect(customResolver.generateReferenceLink(['User'])).toBe('/docs/schema/User')
255
- expect(customResolver.generateReferenceLink(['User', 'name'])).toBe('/docs/schema/User#name')
256
- expect(customResolver.generateReferenceLink(['User', 'posts', 'first'])).toBe('/docs/schema/User#posts-first')
257
- })
258
-
259
- it('should handle fragment configuration', () => {
260
- const noFragmentResolver = createPolenSchemaResolver(testSchema, {
261
- includeFragments: false,
262
- })
263
-
264
- expect(noFragmentResolver.generateReferenceLink(['User', 'name'])).toBe('/reference/User')
265
- })
266
- })
267
-
268
- describe('Documentation Extraction', () => {
269
- it('should extract type documentation', () => {
270
- const docs = resolver.getDocumentation(['User'])
271
-
272
- expect(docs).toBeDefined()
273
- expect(docs!.description).toContain('A user in the system')
274
- expect(docs!.typeInfo).toBe('User')
275
- })
276
-
277
- it('should extract field documentation', () => {
278
- const docs = resolver.getDocumentation(['User', 'email'])
279
-
280
- expect(docs).toBeDefined()
281
- expect(docs!.description).toContain("The user's email address")
282
- expect(docs!.typeInfo).toBe('String!')
283
- })
284
-
285
- it('should extract argument documentation', () => {
286
- const docs = resolver.getDocumentation(['User', 'posts', 'after'])
287
-
288
- expect(docs).toBeDefined()
289
- expect(docs!.description).toContain('Filter posts after this cursor')
290
- expect(docs!.typeInfo).toBe('String')
291
- })
292
- })
293
-
294
- describe('Schema Validation', () => {
295
- it('should return all types', () => {
296
- const types = resolver.getAllTypes()
297
-
298
- expect(types).toContain('User')
299
- expect(types).toContain('Post')
300
- expect(types).toContain('CreateUserInput')
301
- expect(types).toContain('Query')
302
- expect(types).toContain('Mutation')
303
- expect(types).not.toContain('__Schema') // Should filter introspection types
304
- })
305
-
306
- it('should check type existence', () => {
307
- expect(resolver.typeExists('User')).toBe(true)
308
- expect(resolver.typeExists('NonExistentType')).toBe(false)
309
- })
310
- })
311
- })
312
-
313
- describe('Schema-Aware Analysis', () => {
314
- it('should perform complete schema-aware analysis', () => {
315
- const source = `
316
- query GetUser($id: ID!) {
317
- user(id: $id) {
318
- name
319
- email
320
- avatar
321
- }
322
- }
323
- `
324
-
325
- const result = analyzeWithSchema(source, testSchema)
326
-
327
- expect(result.analysis.isValid).toBe(true)
328
- expect(result.resolutions.size).toBeGreaterThan(0)
329
- expect(result.schemaErrors.length).toBeGreaterThan(0)
330
-
331
- // Should have deprecation warning for avatar field
332
- const deprecationWarning = result.schemaErrors.find(
333
- error => error.message.includes('avatar') && error.message.includes('deprecated'),
334
- )
335
- expect(deprecationWarning).toBeDefined()
336
- expect(deprecationWarning!.severity).toBe('warning')
337
- })
338
-
339
- it('should resolve identifiers correctly', () => {
340
- const source = `
341
- query {
342
- user(id: "123") {
343
- name
344
- }
345
- }
346
- `
347
-
348
- const result = analyzeWithSchema(source, testSchema)
349
-
350
- // Find the name field resolution
351
- const nameField = result.analysis.identifiers.all.find(
352
- id => id.name === 'name' && id.kind === 'Field',
353
- )
354
- expect(nameField).toBeDefined()
355
-
356
- const nameResolutionKey = `${nameField!.position.start}-${nameField!.name}-${nameField!.kind}`
357
- const nameResolution = result.resolutions.get(nameResolutionKey)
358
-
359
- expect(nameResolution).toBeDefined()
360
- expect(nameResolution!.exists).toBe(true)
361
- expect(nameResolution!.referenceUrl).toBe('/reference/User#name')
362
- expect(nameResolution!.documentation?.typeInfo).toBe('String!')
363
- })
364
- })
365
- })