polen 0.10.0 → 0.11.0-next.10

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 (357) hide show
  1. package/build/api/api.d.ts +1 -0
  2. package/build/api/api.d.ts.map +1 -1
  3. package/build/api/api.js +1 -0
  4. package/build/api/api.js.map +1 -1
  5. package/build/api/config/configurator.d.ts +55 -26
  6. package/build/api/config/configurator.d.ts.map +1 -1
  7. package/build/api/config/configurator.js +27 -9
  8. package/build/api/config/configurator.js.map +1 -1
  9. package/build/api/config/merge.d.ts.map +1 -1
  10. package/build/api/config/merge.js +0 -11
  11. package/build/api/config/merge.js.map +1 -1
  12. package/build/api/content/metadata.d.ts +8 -2
  13. package/build/api/content/metadata.d.ts.map +1 -1
  14. package/build/api/content/metadata.js +1 -1
  15. package/build/api/content/metadata.js.map +1 -1
  16. package/build/api/schema/data-sources/data-sources.d.ts +1 -0
  17. package/build/api/schema/data-sources/data-sources.d.ts.map +1 -1
  18. package/build/api/schema/data-sources/data-sources.js +1 -0
  19. package/build/api/schema/data-sources/data-sources.js.map +1 -1
  20. package/build/api/schema/data-sources/introspection/introspection.d.ts +83 -0
  21. package/build/api/schema/data-sources/introspection/introspection.d.ts.map +1 -0
  22. package/build/api/schema/data-sources/introspection/introspection.js +110 -0
  23. package/build/api/schema/data-sources/introspection/introspection.js.map +1 -0
  24. package/build/api/schema/data-sources/memory/memory.d.ts +2 -2
  25. package/build/api/schema/data-sources/memory/memory.d.ts.map +1 -1
  26. package/build/api/schema/data-sources/memory/memory.js +1 -3
  27. package/build/api/schema/data-sources/memory/memory.js.map +1 -1
  28. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.d.ts +7 -3
  29. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.d.ts.map +1 -1
  30. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.js +15 -11
  31. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.js.map +1 -1
  32. package/build/api/schema/data-sources/schema-directory/schema-directory.d.ts +16 -7
  33. package/build/api/schema/data-sources/schema-directory/schema-directory.d.ts.map +1 -1
  34. package/build/api/schema/data-sources/schema-directory/schema-directory.js +26 -7
  35. package/build/api/schema/data-sources/schema-directory/schema-directory.js.map +1 -1
  36. package/build/api/schema/data-sources/schema-file/schema-file.d.ts +7 -2
  37. package/build/api/schema/data-sources/schema-file/schema-file.d.ts.map +1 -1
  38. package/build/api/schema/data-sources/schema-file/schema-file.js +13 -5
  39. package/build/api/schema/data-sources/schema-file/schema-file.js.map +1 -1
  40. package/build/api/schema/metadata.d.ts +16 -0
  41. package/build/api/schema/metadata.d.ts.map +1 -0
  42. package/build/api/schema/metadata.js +19 -0
  43. package/build/api/schema/metadata.js.map +1 -0
  44. package/build/api/schema/read.d.ts +85 -11
  45. package/build/api/schema/read.d.ts.map +1 -1
  46. package/build/api/schema/read.js +15 -6
  47. package/build/api/schema/read.js.map +1 -1
  48. package/build/api/schema/schema.d.ts +33 -2
  49. package/build/api/schema/schema.d.ts.map +1 -1
  50. package/build/api/schema/schema.js +42 -0
  51. package/build/api/schema/schema.js.map +1 -1
  52. package/build/api/schema-source/index.d.ts +2 -0
  53. package/build/api/schema-source/index.d.ts.map +1 -0
  54. package/build/api/schema-source/index.js +2 -0
  55. package/build/api/schema-source/index.js.map +1 -0
  56. package/build/api/schema-source/schema-source.d.ts +33 -0
  57. package/build/api/schema-source/schema-source.d.ts.map +1 -0
  58. package/build/api/schema-source/schema-source.js +137 -0
  59. package/build/api/schema-source/schema-source.js.map +1 -0
  60. package/build/api/static/manifest.d.ts +1 -2
  61. package/build/api/static/manifest.d.ts.map +1 -1
  62. package/build/api/static/manifest.js +1 -1
  63. package/build/api/static/manifest.js.map +1 -1
  64. package/build/api/vite/plugins/build.d.ts.map +1 -1
  65. package/build/api/vite/plugins/build.js +3 -0
  66. package/build/api/vite/plugins/build.js.map +1 -1
  67. package/build/api/vite/plugins/core.d.ts +1 -0
  68. package/build/api/vite/plugins/core.d.ts.map +1 -1
  69. package/build/api/vite/plugins/core.js +25 -22
  70. package/build/api/vite/plugins/core.js.map +1 -1
  71. package/build/api/vite/plugins/main.d.ts.map +1 -1
  72. package/build/api/vite/plugins/main.js +1 -8
  73. package/build/api/vite/plugins/main.js.map +1 -1
  74. package/build/api/vite/plugins/schema-assets.d.ts +22 -0
  75. package/build/api/vite/plugins/schema-assets.d.ts.map +1 -0
  76. package/build/api/vite/plugins/schema-assets.js +310 -0
  77. package/build/api/vite/plugins/schema-assets.js.map +1 -0
  78. package/build/api/vite/plugins/serve.d.ts.map +1 -1
  79. package/build/api/vite/plugins/serve.js +11 -0
  80. package/build/api/vite/plugins/serve.js.map +1 -1
  81. package/build/cli/commands/open.js +1 -1
  82. package/build/cli/commands/open.js.map +1 -1
  83. package/build/lib/grafaid/schema/schema.d.ts +1 -1
  84. package/build/lib/grafaid/schema/schema.d.ts.map +1 -1
  85. package/build/lib/grafaid/schema/schema.js +1 -1
  86. package/build/lib/grafaid/schema/schema.js.map +1 -1
  87. package/build/lib/graphql-change/change-groups.d.ts +2 -0
  88. package/build/lib/graphql-change/change-groups.d.ts.map +1 -1
  89. package/build/lib/graphql-change/change-groups.js +54 -0
  90. package/build/lib/graphql-change/change-groups.js.map +1 -1
  91. package/build/lib/kit-temp.d.ts +9 -0
  92. package/build/lib/kit-temp.d.ts.map +1 -1
  93. package/build/lib/kit-temp.js +14 -2
  94. package/build/lib/kit-temp.js.map +1 -1
  95. package/build/lib/path-map/path-map.d.ts.map +1 -1
  96. package/build/lib/path-map/path-map.js +3 -1
  97. package/build/lib/path-map/path-map.js.map +1 -1
  98. package/build/lib/react-router-aid/react-router-aid.d.ts +5 -3
  99. package/build/lib/react-router-aid/react-router-aid.d.ts.map +1 -1
  100. package/build/lib/react-router-aid/react-router-aid.js +7 -4
  101. package/build/lib/react-router-aid/react-router-aid.js.map +1 -1
  102. package/build/project-data.d.ts +3 -11
  103. package/build/project-data.d.ts.map +1 -1
  104. package/build/template/components/Changelog.d.ts +3 -3
  105. package/build/template/components/Changelog.d.ts.map +1 -1
  106. package/build/template/components/Changelog.js +8 -84
  107. package/build/template/components/Changelog.js.map +1 -1
  108. package/build/template/components/CodeBlock.d.ts +2 -0
  109. package/build/template/components/CodeBlock.d.ts.map +1 -1
  110. package/build/template/components/CodeBlock.js +1 -4
  111. package/build/template/components/CodeBlock.js.map +1 -1
  112. package/build/template/components/ComponentDispatch.d.ts +34 -0
  113. package/build/template/components/ComponentDispatch.d.ts.map +1 -0
  114. package/build/template/components/ComponentDispatch.js +33 -0
  115. package/build/template/components/ComponentDispatch.js.map +1 -0
  116. package/build/template/components/ReferenceLink.d.ts +19 -0
  117. package/build/template/components/ReferenceLink.d.ts.map +1 -0
  118. package/build/template/components/ReferenceLink.js +19 -0
  119. package/build/template/components/ReferenceLink.js.map +1 -0
  120. package/build/template/components/TypeAnnotation.d.ts.map +1 -1
  121. package/build/template/components/TypeAnnotation.js +3 -3
  122. package/build/template/components/TypeAnnotation.js.map +1 -1
  123. package/build/template/components/TypeFieldsLinkList.d.ts.map +1 -1
  124. package/build/template/components/TypeFieldsLinkList.js +4 -4
  125. package/build/template/components/TypeFieldsLinkList.js.map +1 -1
  126. package/build/template/components/TypeIndex.js +2 -2
  127. package/build/template/components/TypeIndex.js.map +1 -1
  128. package/build/template/components/VersionSelector.d.ts +7 -0
  129. package/build/template/components/VersionSelector.d.ts.map +1 -0
  130. package/build/template/components/VersionSelector.js +30 -0
  131. package/build/template/components/VersionSelector.js.map +1 -0
  132. package/build/template/components/graphql/type-link.d.ts.map +1 -1
  133. package/build/template/components/graphql/type-link.js +2 -2
  134. package/build/template/components/graphql/type-link.js.map +1 -1
  135. package/build/template/hooks/useVersionPath.d.ts +6 -0
  136. package/build/template/hooks/useVersionPath.d.ts.map +1 -0
  137. package/build/template/hooks/useVersionPath.js +10 -0
  138. package/build/template/hooks/useVersionPath.js.map +1 -0
  139. package/build/template/layouts/ChangelogLayout.d.ts.map +1 -0
  140. package/build/template/{components → layouts}/ChangelogLayout.js +1 -1
  141. package/build/template/layouts/ChangelogLayout.js.map +1 -0
  142. package/build/template/layouts/index.d.ts +1 -0
  143. package/build/template/layouts/index.d.ts.map +1 -1
  144. package/build/template/layouts/index.js +1 -0
  145. package/build/template/layouts/index.js.map +1 -1
  146. package/build/template/lib/fetch-text.d.ts +8 -0
  147. package/build/template/lib/fetch-text.d.ts.map +1 -0
  148. package/build/template/lib/fetch-text.js +14 -0
  149. package/build/template/lib/fetch-text.js.map +1 -0
  150. package/build/template/lib/polen-url.d.ts +14 -0
  151. package/build/template/lib/polen-url.d.ts.map +1 -1
  152. package/build/template/lib/polen-url.js +16 -0
  153. package/build/template/lib/polen-url.js.map +1 -1
  154. package/build/template/lib/schema-utils/constants.d.ts +5 -0
  155. package/build/template/lib/schema-utils/constants.d.ts.map +1 -0
  156. package/build/template/lib/schema-utils/constants.js +5 -0
  157. package/build/template/lib/schema-utils/constants.js.map +1 -0
  158. package/build/template/lib/schema-utils/schema-utils.d.ts +15 -0
  159. package/build/template/lib/schema-utils/schema-utils.d.ts.map +1 -0
  160. package/build/template/lib/schema-utils/schema-utils.js +37 -0
  161. package/build/template/lib/schema-utils/schema-utils.js.map +1 -0
  162. package/build/template/routes/changelog.d.ts +4 -3
  163. package/build/template/routes/changelog.d.ts.map +1 -1
  164. package/build/template/routes/changelog.js +15 -9
  165. package/build/template/routes/changelog.js.map +1 -1
  166. package/build/template/routes/index.js +2 -2
  167. package/build/template/routes/index.js.map +1 -1
  168. package/build/template/routes/pages.d.ts +10 -0
  169. package/build/template/routes/pages.d.ts.map +1 -0
  170. package/build/template/routes/pages.js +76 -0
  171. package/build/template/routes/pages.js.map +1 -0
  172. package/build/template/routes/reference.d.ts +35 -6
  173. package/build/template/routes/reference.d.ts.map +1 -1
  174. package/build/template/routes/reference.js +97 -14
  175. package/build/template/routes/reference.js.map +1 -1
  176. package/build/template/routes/root.d.ts.map +1 -1
  177. package/build/template/routes/root.js +11 -75
  178. package/build/template/routes/root.js.map +1 -1
  179. package/build/template/server/app.d.ts +22 -1
  180. package/build/template/server/app.d.ts.map +1 -1
  181. package/build/template/server/app.js +19 -9
  182. package/build/template/server/app.js.map +1 -1
  183. package/build/template/server/main.js +9 -1
  184. package/build/template/server/main.js.map +1 -1
  185. package/build/template/server/ssg/generate.js +2 -2
  186. package/build/template/server/ssg/generate.js.map +1 -1
  187. package/build/template/server/ssg/get-route-paths.d.ts +1 -1
  188. package/build/template/server/ssg/get-route-paths.d.ts.map +1 -1
  189. package/build/template/server/ssg/get-route-paths.js +90 -27
  190. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  191. package/build/template/sources/schema-source.d.ts +15 -0
  192. package/build/template/sources/schema-source.d.ts.map +1 -0
  193. package/build/template/sources/schema-source.js +64 -0
  194. package/build/template/sources/schema-source.js.map +1 -0
  195. package/package.json +16 -17
  196. package/src/api/api.ts +1 -0
  197. package/src/api/config/configurator.ts +86 -36
  198. package/src/api/config/merge.ts +0 -16
  199. package/src/api/content/metadata.ts +1 -1
  200. package/src/api/schema/data-sources/data-sources.ts +1 -0
  201. package/src/api/schema/data-sources/introspection/introspection.ts +213 -0
  202. package/src/api/schema/data-sources/memory/memory.ts +3 -5
  203. package/src/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.ts +29 -13
  204. package/src/api/schema/data-sources/schema-directory/schema-directory.ts +56 -16
  205. package/src/api/schema/data-sources/schema-file/schema-file.ts +16 -7
  206. package/src/api/schema/metadata.ts +23 -0
  207. package/src/api/schema/read.ts +109 -18
  208. package/src/api/schema/schema.ts +62 -2
  209. package/src/api/schema-source/index.ts +1 -0
  210. package/src/api/schema-source/schema-source.ts +189 -0
  211. package/src/api/static/manifest.ts +1 -1
  212. package/src/api/vite/plugins/build.ts +3 -0
  213. package/src/api/vite/plugins/core.ts +27 -22
  214. package/src/api/vite/plugins/main.ts +1 -9
  215. package/src/api/vite/plugins/schema-assets.ts +364 -0
  216. package/src/api/vite/plugins/serve.ts +15 -8
  217. package/src/cli/commands/open.ts +1 -1
  218. package/src/lib/grafaid/schema/schema.ts +1 -0
  219. package/src/lib/graphql-change/change-groups.ts +57 -0
  220. package/src/lib/kit-temp.ts +15 -2
  221. package/src/lib/mask/$.test.ts +3 -3
  222. package/src/lib/path-map/$.test.ts +22 -19
  223. package/src/lib/path-map/path-map.ts +3 -1
  224. package/src/lib/react-router-aid/react-router-aid.ts +12 -6
  225. package/src/project-data.ts +3 -11
  226. package/src/template/components/Changelog.tsx +16 -67
  227. package/src/template/components/CodeBlock.tsx +3 -5
  228. package/src/template/components/ComponentDispatch.tsx +42 -0
  229. package/src/template/components/ReferenceLink.tsx +34 -0
  230. package/src/template/components/TypeAnnotation.tsx +5 -7
  231. package/src/template/components/TypeFieldsLinkList.tsx +20 -23
  232. package/src/template/components/TypeIndex.tsx +10 -12
  233. package/src/template/components/VersionSelector.tsx +50 -0
  234. package/src/template/components/graphql/type-link.tsx +4 -3
  235. package/src/template/hooks/useVersionPath.ts +10 -0
  236. package/src/template/{components → layouts}/ChangelogLayout.tsx +1 -1
  237. package/src/template/layouts/index.ts +1 -0
  238. package/src/template/lib/fetch-text.ts +13 -0
  239. package/src/template/lib/polen-url.ts +20 -0
  240. package/src/template/lib/schema-utils/constants.ts +4 -0
  241. package/src/template/lib/schema-utils/schema-utils.ts +42 -0
  242. package/src/template/routes/changelog.tsx +19 -10
  243. package/src/template/routes/index.tsx +2 -2
  244. package/src/template/routes/pages.tsx +109 -0
  245. package/src/template/routes/reference.tsx +112 -12
  246. package/src/template/routes/root.tsx +11 -112
  247. package/src/template/server/app.ts +47 -14
  248. package/src/template/server/main.ts +9 -1
  249. package/src/template/server/ssg/generate.ts +2 -2
  250. package/src/template/server/ssg/get-route-paths.test.ts +132 -0
  251. package/src/template/server/ssg/get-route-paths.ts +91 -27
  252. package/src/template/sources/schema-source.ts +69 -0
  253. package/build/lib/graphql-document/$$.d.ts +0 -5
  254. package/build/lib/graphql-document/$$.d.ts.map +0 -1
  255. package/build/lib/graphql-document/$$.js +0 -5
  256. package/build/lib/graphql-document/$$.js.map +0 -1
  257. package/build/lib/graphql-document/$.d.ts +0 -2
  258. package/build/lib/graphql-document/$.d.ts.map +0 -1
  259. package/build/lib/graphql-document/$.js +0 -2
  260. package/build/lib/graphql-document/$.js.map +0 -1
  261. package/build/lib/graphql-document/analysis.d.ts +0 -44
  262. package/build/lib/graphql-document/analysis.d.ts.map +0 -1
  263. package/build/lib/graphql-document/analysis.js +0 -361
  264. package/build/lib/graphql-document/analysis.js.map +0 -1
  265. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -38
  266. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +0 -1
  267. package/build/lib/graphql-document/components/GraphQLDocument.js +0 -151
  268. package/build/lib/graphql-document/components/GraphQLDocument.js.map +0 -1
  269. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +0 -7
  270. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +0 -1
  271. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +0 -27
  272. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +0 -1
  273. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +0 -33
  274. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +0 -1
  275. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +0 -50
  276. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +0 -1
  277. package/build/lib/graphql-document/components/IdentifierLink.d.ts +0 -39
  278. package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +0 -1
  279. package/build/lib/graphql-document/components/IdentifierLink.js +0 -75
  280. package/build/lib/graphql-document/components/IdentifierLink.js.map +0 -1
  281. package/build/lib/graphql-document/components/graphql-document-styles.d.ts +0 -5
  282. package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +0 -1
  283. package/build/lib/graphql-document/components/graphql-document-styles.js +0 -144
  284. package/build/lib/graphql-document/components/graphql-document-styles.js.map +0 -1
  285. package/build/lib/graphql-document/components/index.d.ts +0 -5
  286. package/build/lib/graphql-document/components/index.d.ts.map +0 -1
  287. package/build/lib/graphql-document/components/index.js +0 -5
  288. package/build/lib/graphql-document/components/index.js.map +0 -1
  289. package/build/lib/graphql-document/example.d.ts +0 -25
  290. package/build/lib/graphql-document/example.d.ts.map +0 -1
  291. package/build/lib/graphql-document/example.js +0 -140
  292. package/build/lib/graphql-document/example.js.map +0 -1
  293. package/build/lib/graphql-document/graphql-document.d.ts +0 -35
  294. package/build/lib/graphql-document/graphql-document.d.ts.map +0 -1
  295. package/build/lib/graphql-document/graphql-document.js +0 -36
  296. package/build/lib/graphql-document/graphql-document.js.map +0 -1
  297. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +0 -43
  298. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +0 -1
  299. package/build/lib/graphql-document/hooks/use-tooltip-state.js +0 -132
  300. package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +0 -1
  301. package/build/lib/graphql-document/positioning-simple.d.ts +0 -63
  302. package/build/lib/graphql-document/positioning-simple.d.ts.map +0 -1
  303. package/build/lib/graphql-document/positioning-simple.js +0 -185
  304. package/build/lib/graphql-document/positioning-simple.js.map +0 -1
  305. package/build/lib/graphql-document/schema-context.d.ts +0 -8
  306. package/build/lib/graphql-document/schema-context.d.ts.map +0 -1
  307. package/build/lib/graphql-document/schema-context.js +0 -11
  308. package/build/lib/graphql-document/schema-context.js.map +0 -1
  309. package/build/lib/graphql-document/schema-integration.d.ts +0 -135
  310. package/build/lib/graphql-document/schema-integration.d.ts.map +0 -1
  311. package/build/lib/graphql-document/schema-integration.js +0 -328
  312. package/build/lib/graphql-document/schema-integration.js.map +0 -1
  313. package/build/lib/graphql-document/types.d.ts +0 -117
  314. package/build/lib/graphql-document/types.d.ts.map +0 -1
  315. package/build/lib/graphql-document/types.js +0 -2
  316. package/build/lib/graphql-document/types.js.map +0 -1
  317. package/build/template/components/ChangelogLayout.d.ts.map +0 -1
  318. package/build/template/components/ChangelogLayout.js.map +0 -1
  319. package/build/template/components/CodeHikePre.d.ts +0 -16
  320. package/build/template/components/CodeHikePre.d.ts.map +0 -1
  321. package/build/template/components/CodeHikePre.js +0 -37
  322. package/build/template/components/CodeHikePre.js.map +0 -1
  323. package/build/template/routes/reference.$type.$field.d.ts +0 -5
  324. package/build/template/routes/reference.$type.$field.d.ts.map +0 -1
  325. package/build/template/routes/reference.$type.$field.js +0 -31
  326. package/build/template/routes/reference.$type.$field.js.map +0 -1
  327. package/build/template/routes/reference.$type.d.ts +0 -5
  328. package/build/template/routes/reference.$type.d.ts.map +0 -1
  329. package/build/template/routes/reference.$type.js +0 -23
  330. package/build/template/routes/reference.$type.js.map +0 -1
  331. package/src/lib/graphql-document/$$.ts +0 -4
  332. package/src/lib/graphql-document/$.test.ts +0 -132
  333. package/src/lib/graphql-document/$.ts +0 -1
  334. package/src/lib/graphql-document/README.md +0 -102
  335. package/src/lib/graphql-document/analysis.ts +0 -415
  336. package/src/lib/graphql-document/components/GraphQLDocument.tsx +0 -265
  337. package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +0 -188
  338. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +0 -46
  339. package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +0 -199
  340. package/src/lib/graphql-document/components/IdentifierLink.tsx +0 -160
  341. package/src/lib/graphql-document/components/graphql-document-styles.ts +0 -144
  342. package/src/lib/graphql-document/components/index.ts +0 -4
  343. package/src/lib/graphql-document/demo.md +0 -155
  344. package/src/lib/graphql-document/example.ts +0 -163
  345. package/src/lib/graphql-document/graphql-document.ts +0 -37
  346. package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +0 -76
  347. package/src/lib/graphql-document/hooks/use-tooltip-state.ts +0 -191
  348. package/src/lib/graphql-document/positioning-simple.test.ts +0 -248
  349. package/src/lib/graphql-document/positioning-simple.ts +0 -260
  350. package/src/lib/graphql-document/schema-context.tsx +0 -20
  351. package/src/lib/graphql-document/schema-integration.test.ts +0 -365
  352. package/src/lib/graphql-document/schema-integration.ts +0 -488
  353. package/src/lib/graphql-document/types.ts +0 -129
  354. package/src/template/components/CodeHikePre.tsx +0 -51
  355. package/src/template/routes/reference.$type.$field.tsx +0 -34
  356. package/src/template/routes/reference.$type.tsx +0 -27
  357. /package/build/template/{components → layouts}/ChangelogLayout.d.ts +0 -0
@@ -1,7 +1,8 @@
1
- import { Grafaid } from '#lib/grafaid/index';
2
- import { visit } from 'graphql';
3
- // Or your specific import path for this type
1
+ import { Api } from '#api/index';
4
2
  import { ReactRouterAid } from '#lib/react-router-aid/index';
3
+ import { visit } from 'graphql';
4
+ import * as NodeFs from 'node:fs/promises';
5
+ import * as NodePath from 'node:path';
5
6
  import PROJECT_DATA from 'virtual:polen/project/data.jsonsuper';
6
7
  import { routes } from '../../routes.js';
7
8
  // todo: Frameworks tend to colocate ssg data loaders with routes to solve the following
@@ -9,35 +10,97 @@ import { routes } from '../../routes.js';
9
10
  // Maybe we can figure something out too.
10
11
  const knownParameterizedRouteExpressions = {
11
12
  reference_type: `/reference/:type`,
13
+ reference_type_field: `/reference/:type/:field`,
14
+ reference_version: `/reference/version/:version`,
15
+ reference_versioned_type: `/reference/version/:version/:type`,
16
+ reference_versioned_type_field: `/reference/version/:version/:type/:field`,
12
17
  };
13
- export const getRoutesPaths = () => {
18
+ export const getRoutesPaths = async () => {
14
19
  const paths = new Set();
15
20
  const routeExpressions = ReactRouterAid.getRouteExpressions(routes);
21
+ // Helper function to load schema from filesystem and add type paths
22
+ const addTypePathsForVersion = async (version, pathPrefix, includeFields = false) => {
23
+ try {
24
+ const schemaFilePath = NodePath.join(PROJECT_DATA.paths.project.absolute.build.assets.schemas, `${version}.json`);
25
+ const schemaContent = await NodeFs.readFile(schemaFilePath, 'utf-8');
26
+ const schemaAst = JSON.parse(schemaContent);
27
+ visit(schemaAst, {
28
+ ObjectTypeDefinition(node) {
29
+ const typePath = `${pathPrefix}/${node.name.value}`;
30
+ paths.add(typePath);
31
+ // Add field paths if requested
32
+ if (includeFields && node.fields) {
33
+ for (const field of node.fields) {
34
+ paths.add(`${typePath}/${field.name.value}`);
35
+ }
36
+ }
37
+ },
38
+ InterfaceTypeDefinition(node) {
39
+ const typePath = `${pathPrefix}/${node.name.value}`;
40
+ paths.add(typePath);
41
+ // Add field paths if requested
42
+ if (includeFields && node.fields) {
43
+ for (const field of node.fields) {
44
+ paths.add(`${typePath}/${field.name.value}`);
45
+ }
46
+ }
47
+ },
48
+ EnumTypeDefinition(node) {
49
+ paths.add(`${pathPrefix}/${node.name.value}`);
50
+ },
51
+ InputObjectTypeDefinition(node) {
52
+ paths.add(`${pathPrefix}/${node.name.value}`);
53
+ },
54
+ UnionTypeDefinition(node) {
55
+ paths.add(`${pathPrefix}/${node.name.value}`);
56
+ },
57
+ ScalarTypeDefinition(node) {
58
+ paths.add(`${pathPrefix}/${node.name.value}`);
59
+ },
60
+ });
61
+ }
62
+ catch (error) {
63
+ throw new Error(`SSG failed to load schema for version ${version}. Ensure schema assets are built. ${error}`);
64
+ }
65
+ };
66
+ const schemaMetadataPath = NodePath.join(PROJECT_DATA.paths.project.absolute.build.assets.schemas, 'metadata.json');
67
+ const schemaMetadata = await Api.Schema.getMetadata(schemaMetadataPath);
68
+ const { hasSchema, versions: availableVersions } = schemaMetadata;
16
69
  for (const exp of routeExpressions) {
17
70
  if (exp === knownParameterizedRouteExpressions.reference_type) {
18
- if (PROJECT_DATA.schema) {
19
- const schema = PROJECT_DATA.schema.versions[0].after;
20
- const ast = Grafaid.Schema.AST.parse(Grafaid.Schema.print(schema));
21
- visit(ast, {
22
- ObjectTypeDefinition(node) {
23
- paths.add(`/reference/${node.name.value}`);
24
- },
25
- InterfaceTypeDefinition(node) {
26
- paths.add(`/reference/${node.name.value}`);
27
- },
28
- EnumTypeDefinition(node) {
29
- paths.add(`/reference/${node.name.value}`);
30
- },
31
- InputObjectTypeDefinition(node) {
32
- paths.add(`/reference/${node.name.value}`);
33
- },
34
- UnionTypeDefinition(node) {
35
- paths.add(`/reference/${node.name.value}`);
36
- },
37
- ScalarTypeDefinition(node) {
38
- paths.add(`/reference/${node.name.value}`);
39
- },
40
- });
71
+ if (hasSchema) {
72
+ // Add paths for latest version (no version in URL)
73
+ await addTypePathsForVersion(Api.Schema.VERSION_LATEST, `/reference`);
74
+ }
75
+ }
76
+ else if (exp === knownParameterizedRouteExpressions.reference_version) {
77
+ if (hasSchema) {
78
+ // Add paths for version pages themselves (without type)
79
+ for (const version of availableVersions) {
80
+ paths.add(`/reference/version/${version}`);
81
+ }
82
+ }
83
+ }
84
+ else if (exp === knownParameterizedRouteExpressions.reference_type_field) {
85
+ if (hasSchema) {
86
+ // Add paths for latest version fields
87
+ await addTypePathsForVersion(Api.Schema.VERSION_LATEST, `/reference`, true);
88
+ }
89
+ }
90
+ else if (exp === knownParameterizedRouteExpressions.reference_versioned_type) {
91
+ if (hasSchema) {
92
+ // Add paths for all versions using new route structure
93
+ for (const version of availableVersions) {
94
+ await addTypePathsForVersion(version, `/reference/version/${version}`);
95
+ }
96
+ }
97
+ }
98
+ else if (exp === knownParameterizedRouteExpressions.reference_versioned_type_field) {
99
+ if (hasSchema) {
100
+ // Add paths for all versions with fields
101
+ for (const version of availableVersions) {
102
+ await addTypePathsForVersion(version, `/reference/version/${version}`, true);
103
+ }
41
104
  }
42
105
  }
43
106
  else if (ReactRouterAid.isParameterizedPath(exp)) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-route-paths.js","sourceRoot":"","sources":["../../../../src/template/server/ssg/get-route-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,6CAA6C;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,wFAAwF;AACxF,uEAAuE;AACvE,yCAAyC;AACzC,MAAM,kCAAkC,GAAG;IACzC,cAAc,EAAE,kBAAkB;CACnC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,GAAa,EAAE;IAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,MAAM,gBAAgB,GAAG,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAEnE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,kCAAkC,CAAC,cAAc,EAAE,CAAC;YAC9D,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBACpD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;gBAClE,KAAK,CAAC,GAAG,EAAE;oBACT,oBAAoB,CAAC,IAAI;wBACvB,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC5C,CAAC;oBACD,uBAAuB,CAAC,IAAI;wBAC1B,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC5C,CAAC;oBACD,kBAAkB,CAAC,IAAI;wBACrB,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC5C,CAAC;oBACD,yBAAyB,CAAC,IAAI;wBAC5B,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC5C,CAAC;oBACD,mBAAmB,CAAC,IAAI;wBACtB,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC5C,CAAC;oBACD,oBAAoB,CAAC,IAAI;wBACvB,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;oBAC5C,CAAC;iBACF,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,cAAc;YACd,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA,CAAC,gCAAgC;AAClE,CAAC,CAAA"}
1
+ {"version":3,"file":"get-route-paths.js","sourceRoot":"","sources":["../../../../src/template/server/ssg/get-route-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAA;AAC1C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,wFAAwF;AACxF,uEAAuE;AACvE,yCAAyC;AACzC,MAAM,kCAAkC,GAAG;IACzC,cAAc,EAAE,kBAAkB;IAClC,oBAAoB,EAAE,yBAAyB;IAC/C,iBAAiB,EAAE,6BAA6B;IAChD,wBAAwB,EAAE,mCAAmC;IAC7D,8BAA8B,EAAE,0CAA0C;CAC3E,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAuB,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,MAAM,gBAAgB,GAAG,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAEnE,oEAAoE;IACpE,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAe,EAAE,UAAkB,EAAE,aAAa,GAAG,KAAK,EAAE,EAAE;QAClG,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,OAAO,CAAC,CAAA;YACjH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;YAE3C,KAAK,CAAC,SAAS,EAAE;gBACf,oBAAoB,CAAC,IAAI;oBACvB,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;oBACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBAEnB,+BAA+B;oBAC/B,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAChC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;wBAC9C,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,uBAAuB,CAAC,IAAI;oBAC1B,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;oBACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBAEnB,+BAA+B;oBAC/B,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BAChC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;wBAC9C,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,kBAAkB,CAAC,IAAI;oBACrB,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC/C,CAAC;gBACD,yBAAyB,CAAC,IAAI;oBAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC/C,CAAC;gBACD,mBAAmB,CAAC,IAAI;oBACtB,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC/C,CAAC;gBACD,oBAAoB,CAAC,IAAI;oBACvB,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC/C,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,OAAO,qCAAqC,KAAK,EAAE,CAAC,CAAA;QAC/G,CAAC;IACH,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAEnH,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACvE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAA;IAEjE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,IAAI,GAAG,KAAK,kCAAkC,CAAC,cAAc,EAAE,CAAC;YAC9D,IAAI,SAAS,EAAE,CAAC;gBACd,mDAAmD;gBACnD,MAAM,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;YACvE,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,kCAAkC,CAAC,iBAAiB,EAAE,CAAC;YACxE,IAAI,SAAS,EAAE,CAAC;gBACd,wDAAwD;gBACxD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;oBACxC,KAAK,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,kCAAkC,CAAC,oBAAoB,EAAE,CAAC;YAC3E,IAAI,SAAS,EAAE,CAAC;gBACd,sCAAsC;gBACtC,MAAM,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;YAC7E,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,kCAAkC,CAAC,wBAAwB,EAAE,CAAC;YAC/E,IAAI,SAAS,EAAE,CAAC;gBACd,uDAAuD;gBACvD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;oBACxC,MAAM,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,OAAO,EAAE,CAAC,CAAA;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,kCAAkC,CAAC,8BAA8B,EAAE,CAAC;YACrF,IAAI,SAAS,EAAE,CAAC;gBACd,yCAAyC;gBACzC,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;oBACxC,MAAM,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,cAAc;YACd,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA,CAAC,gCAAgC;AAClE,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ export declare const schemaSource: {
2
+ versions: string[];
3
+ isEmpty: boolean;
4
+ get: (version: string) => Promise<import("graphql").GraphQLSchema>;
5
+ getChangelog: (version: string) => Promise<import("../../api/schema/schema.js").ChangelogData>;
6
+ getAllChangesets: () => Promise<import("../../lib/graphql-changeset/graphql-changeset.js").ChangeSet[]>;
7
+ clearCache: () => void;
8
+ writeSchema: (version: string, schema: import("graphql").GraphQLSchema) => Promise<void>;
9
+ writeChangelog: (version: string, changelog: import("../../api/schema/schema.js").ChangelogData) => Promise<void>;
10
+ clearAllAssets: () => Promise<void>;
11
+ removeAsset: (version: string) => Promise<void>;
12
+ writeMetadata: (metadata: import("../../api/schema/metadata.js").SchemaMetadata) => Promise<void>;
13
+ writeAllAssets: (schemaData: Awaited<ReturnType<typeof import("../../api/schema/read.js").readOrThrow>>["data"], metadata: import("../../api/schema/metadata.js").SchemaMetadata) => Promise<void>;
14
+ };
15
+ //# sourceMappingURL=schema-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-source.d.ts","sourceRoot":"","sources":["../../../src/template/sources/schema-source.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAIvB,CAAA"}
@@ -0,0 +1,64 @@
1
+ import PROJECT_DATA from 'virtual:polen/project/data.jsonsuper';
2
+ import PROJECT_SCHEMA_METADATA from 'virtual:polen/project/schema-metadata';
3
+ import { createSchemaSource } from '../../api/schema-source/index.js';
4
+ import { polenUrlPathAssets } from '../lib/polen-url.js';
5
+ // Environment-specific IO implementation
6
+ const io = import.meta.env.SSR
7
+ ? {
8
+ // Server-side: Read from filesystem
9
+ read: async (path) => {
10
+ // Dynamic import to keep fs out of client bundle
11
+ const { readFile } = await import('node:fs/promises');
12
+ // Extract the path after the assets route
13
+ // e.g., "/assets/schemas/latest.json" -> "schemas/latest.json"
14
+ // e.g., "/demos/pokemon/assets/schemas/latest.json" -> "schemas/latest.json"
15
+ const assetsRoute = PROJECT_DATA.server.routes.assets;
16
+ const routePattern = new RegExp(`${assetsRoute}/(.+)$`);
17
+ const match = path.match(routePattern);
18
+ const assetPath = match ? match[1] : path;
19
+ // In SSR, we need to read from the correct location
20
+ // During dev, assets are served from Polen's node_modules
21
+ // In production, they're in the build output directory
22
+ let fullPath;
23
+ if (import.meta.env.DEV) {
24
+ // Development: Read from Polen's Vite cache
25
+ fullPath = `${PROJECT_DATA.paths.framework.devAssets.absolute}/${assetPath}`;
26
+ }
27
+ else {
28
+ // Production: Read from build output
29
+ // The server runs from the project root, and assets are in build/assets/
30
+ fullPath =
31
+ `${PROJECT_DATA.paths.project.relative.build.root}/${PROJECT_DATA.paths.project.relative.build.relative.assets.root}/${assetPath}`;
32
+ }
33
+ return readFile(fullPath, 'utf-8');
34
+ },
35
+ }
36
+ : {
37
+ // Client-side: Fetch from HTTP
38
+ read: async (path) => {
39
+ const response = await fetch(path);
40
+ if (!response.ok) {
41
+ throw new Error(`Failed to fetch: ${path} (${response.status} ${response.statusText})`);
42
+ }
43
+ return response.text();
44
+ },
45
+ };
46
+ // Create and export the source object directly
47
+ export const schemaSource = createSchemaSource({
48
+ io,
49
+ versions: PROJECT_SCHEMA_METADATA.versions,
50
+ assetsPath: polenUrlPathAssets(),
51
+ });
52
+ // HMR cache invalidation for development
53
+ if (import.meta.hot) {
54
+ import.meta.hot.on('polen:schema-invalidate', () => {
55
+ console.log('[HMR] Schema cache invalidated');
56
+ schemaSource.clearCache();
57
+ // Brute force approach: reload the page to ensure fresh data
58
+ // This guarantees all components see the updated schema immediately
59
+ // TODO: When we have reactive data fetching, remove this reload
60
+ // and let the reactive system handle updates gracefully
61
+ window.location.reload();
62
+ });
63
+ }
64
+ //# sourceMappingURL=schema-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-source.js","sourceRoot":"","sources":["../../../src/template/sources/schema-source.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,uBAAuB,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,yCAAyC;AACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IAC5B,CAAC,CAAC;QACA,oCAAoC;QACpC,IAAI,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAC3B,iDAAiD;YACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAErD,0CAA0C;YAC1C,+DAA+D;YAC/D,6EAA6E;YAC7E,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;YACrD,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,QAAQ,CAAC,CAAA;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAEzC,oDAAoD;YACpD,0DAA0D;YAC1D,uDAAuD;YACvD,IAAI,QAAgB,CAAA;YACpB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACxB,4CAA4C;gBAC5C,QAAQ,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAA;YAC9E,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,yEAAyE;gBACzE,QAAQ;oBACN,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAA;YACtI,CAAC;YAED,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC;KACF;IACD,CAAC,CAAC;QACA,+BAA+B;QAC/B,IAAI,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAA;YACzF,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC;KACF,CAAA;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;IAC7C,EAAE;IACF,QAAQ,EAAE,uBAAuB,CAAC,QAAQ;IAC1C,UAAU,EAAE,kBAAkB,EAAE;CACjC,CAAC,CAAA;AAEF,yCAAyC;AACzC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC7C,YAAY,CAAC,UAAU,EAAE,CAAA;QAEzB,6DAA6D;QAC7D,oEAAoE;QACpE,gEAAgE;QAChE,8DAA8D;QAC9D,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polen",
3
- "version": "0.10.0",
3
+ "version": "0.11.0-next.10",
4
4
  "type": "module",
5
5
  "description": "A framework for delightful GraphQL developer portals",
6
6
  "author": {
@@ -87,18 +87,18 @@
87
87
  "@graphql-inspector/core": "^6.2.1",
88
88
  "@graphql-tools/load": "^8.1.0",
89
89
  "@hiogawa/vite-plugin-ssr-css": "^0.0.1",
90
- "@hono/node-server": "^1.15.0",
90
+ "@hono/node-server": "^1.16.0",
91
91
  "@mdx-js/mdx": "^3.1.0",
92
92
  "@mdx-js/react": "^3.1.0",
93
93
  "@mdx-js/rollup": "^3.1.0",
94
94
  "@radix-ui/react-icons": "^1.3.2",
95
95
  "@radix-ui/themes": "^3.2.1",
96
- "@rolldown/pluginutils": "1.0.0-beta.24",
96
+ "@rolldown/pluginutils": "1.0.0-beta.27",
97
97
  "@rollup/pluginutils": "^5.2.0",
98
98
  "@types/jsesc": "^3.0.3",
99
99
  "@vitejs/plugin-react": "^4.6.0",
100
100
  "@vitejs/plugin-react-oxc": "^0.2.3",
101
- "@vltpkg/semver": "0.0.0-16",
101
+ "@vltpkg/semver": "0.0.0-17",
102
102
  "@vue/reactivity": "^3.5.17",
103
103
  "@wollybeard/kit": "^0.41.0",
104
104
  "@wollybeard/projector": "^0.3.0",
@@ -107,12 +107,12 @@
107
107
  "codehike": "^1.0.7",
108
108
  "consola": "^3.4.2",
109
109
  "defu": "^6.1.4",
110
- "es-toolkit": "^1.39.6",
110
+ "es-toolkit": "^1.39.7",
111
111
  "fuse.js": "^7.1.0",
112
112
  "graffle": "8.0.0-next.163",
113
113
  "graphql": "^16.11.0",
114
114
  "gray-matter": "^4.0.3",
115
- "hono": "^4.8.4",
115
+ "hono": "^4.8.5",
116
116
  "jsesc": "^3.1.0",
117
117
  "jsonc-parser": "^3.3.1",
118
118
  "react": "^19.1.0",
@@ -126,22 +126,21 @@
126
126
  "remark-parse": "^11.0.0",
127
127
  "remark-rehype": "^11.1.2",
128
128
  "resolve.imports": "^2.0.3",
129
- "rolldown": "1.0.0-beta.24",
129
+ "rolldown": "1.0.0-beta.27",
130
130
  "simple-git": "^3.28.0",
131
131
  "source-map": "^0.7.4",
132
132
  "superjson": "^2.2.2",
133
133
  "tinyglobby": "^0.2.14",
134
- "tree-sitter-graphql-grammar-wasm": "^1.0.0",
134
+ "tree-sitter-graphql-grammar-wasm": "^1.1.0",
135
135
  "tsx": "^4.20.3",
136
136
  "typescript": "^5.8.3",
137
137
  "unified": "^11.0.5",
138
138
  "vfile": "^6.0.3",
139
- "vite": "npm:rolldown-vite@^7.0.4",
139
+ "vite": "npm:rolldown-vite@^7.0.9",
140
140
  "vite-plugin-inspect": "^11.3.0",
141
- "vite-plugin-restart": "^0.4.2",
142
- "web-tree-sitter": "^0.25.6",
141
+ "web-tree-sitter": "^0.25.8",
143
142
  "youch-core": "^0.3.3",
144
- "zx": "8.6.1"
143
+ "zx": "8.7.1"
145
144
  },
146
145
  "devDependencies": {
147
146
  "@actions/core": "^1.11.1",
@@ -151,15 +150,15 @@
151
150
  "@actions/io": "^1.1.3",
152
151
  "@changesets/cli": "^2.29.5",
153
152
  "@molt/command": "^0.9.0",
154
- "@octokit/core": "^7.0.2",
153
+ "@octokit/core": "^7.0.3",
155
154
  "@octokit/types": "^14.1.0",
156
- "@playwright/browser-chromium": "^1.53.2",
155
+ "@playwright/browser-chromium": "^1.54.1",
157
156
  "@testing-library/react": "^16.3.0",
158
157
  "@tsconfig/node-lts": "^22.0.2",
159
158
  "@tsconfig/node22": "^22.0.2",
160
159
  "@tsconfig/strictest": "^2.0.5",
161
160
  "@types/jsdom": "^21.1.7",
162
- "@types/node": "^24.0.10",
161
+ "@types/node": "^24.0.14",
163
162
  "@types/react": "^19.1.8",
164
163
  "@types/react-dom": "^19.1.6",
165
164
  "@types/semver": "^7.7.0",
@@ -167,10 +166,10 @@
167
166
  "dripip": "^0.10.0",
168
167
  "fast-check": "^4.2.0",
169
168
  "fs-jetpack": "^5.1.0",
170
- "get-port-please": "^3.1.2",
169
+ "get-port-please": "^3.2.0",
171
170
  "globals": "^16.3.0",
172
171
  "jsdom": "^26.1.0",
173
- "playwright": "1.53.2",
172
+ "playwright": "1.54.1",
174
173
  "publint": "^0.3.12",
175
174
  "semver": "^7.7.2",
176
175
  "strip-ansi": "^7.1.0",
package/src/api/api.ts CHANGED
@@ -2,4 +2,5 @@ export * from './builder/index.js'
2
2
  export * from './config-resolver/index.js'
3
3
  export * from './config/index.js'
4
4
  export * as Project from './project/index.js'
5
+ export * from './schema/index.js'
5
6
  export * from './static/index.js'
@@ -31,25 +31,56 @@ export interface ConfigInput {
31
31
  * - `file` - Load from a single SDL file (default: schema.graphql)
32
32
  * - `directory` - Load multiple SDL files with date prefixes (enables changelog)
33
33
  * - `memory` - Define schemas programmatically in configuration
34
+ * - `introspection` - Fetch schema from a GraphQL endpoint
35
+ * - `data` - Use pre-built schema objects
34
36
  *
35
37
  * @example
36
38
  * ```ts
37
- * // Single file
39
+ * // Default: looks for schema.graphql
40
+ * schema: {}
41
+ *
42
+ * // Load via introspection
38
43
  * schema: {
39
- * useDataSources: 'file',
40
44
  * dataSources: {
41
- * file: { path: './my-schema.graphql' }
45
+ * introspection: {
46
+ * url: 'https://api.example.com/graphql',
47
+ * headers: { 'Authorization': `Bearer ${process.env.API_TOKEN}` }
48
+ * }
42
49
  * }
43
50
  * }
44
51
  *
45
52
  * // Multiple versions for changelog
46
53
  * schema: {
47
- * useDataSources: 'directory',
48
54
  * dataSources: {
49
55
  * directory: { path: './schema' }
50
56
  * }
51
57
  * }
58
+ *
59
+ * // Custom source order
60
+ * schema: {
61
+ * useDataSources: ['introspection', 'file'],
62
+ * dataSources: {
63
+ * introspection: { url: 'https://api.example.com/graphql' },
64
+ * file: { path: './fallback.graphql' }
65
+ * }
66
+ * }
52
67
  * ```
68
+ *
69
+ * **Two introspection features**:
70
+ * 1. **File Convention**: Polen auto-detects `schema.introspection.json` files
71
+ * 2. **Config-driven**: Polen fetches and caches introspection for you
72
+ *
73
+ * **Interoperability**: The `schema.introspection.json` file uses the standard
74
+ * GraphQL introspection format, compatible with GraphQL Codegen, Apollo CLI, etc.
75
+ *
76
+ * **Lifecycle**:
77
+ * - First run: Fetches from endpoint, saves to `schema.introspection.json`
78
+ * - Subsequent runs: Loads from JSON file (no network request)
79
+ * - To refresh: Delete the JSON file
80
+ * - Runs during `polen dev` and `polen build`, never at runtime
81
+ *
82
+ * **Query details**: Uses the standard introspection query from the GraphQL spec
83
+ * @see https://spec.graphql.org/draft/#sec-Introspection
53
84
  */
54
85
  schema?: SchemaConfigInput
55
86
  /**
@@ -240,22 +271,6 @@ export interface ConfigInput {
240
271
  * @default false
241
272
  */
242
273
  isSelfContainedMode?: boolean
243
- /**
244
- * Tweak the watch behavior.
245
- */
246
- watch?: {
247
- /**
248
- * Restart the development server when some arbitrary files change.
249
- *
250
- * Use this to restart when files that are not already watched by vite change.
251
- *
252
- * @see https://github.com/antfu/vite-plugin-restart
253
- */
254
- /**
255
- * File paths to watch and restart the development server when they change.
256
- */
257
- also?: string[]
258
- }
259
274
  /**
260
275
  * Whether to enable debug mode.
261
276
  *
@@ -289,6 +304,13 @@ const buildPaths = (rootDir: string): Config[`paths`] => {
289
304
 
290
305
  const publicAbsolutePath = rootAbsolute(`public`)
291
306
  const publicAbsolute = Path.ensureAbsoluteWith(publicAbsolutePath)
307
+
308
+ const assetsAbsolute = Path.ensureAbsoluteWith(buildAbsolute(`assets`))
309
+
310
+ // Dev assets paths
311
+ const devAssetsRelative = 'node_modules/.vite/polen-assets'
312
+ const devAssetsAbsolute = Path.join(packagePaths.rootDir, devAssetsRelative)
313
+
292
314
  return {
293
315
  project: {
294
316
  rootDir,
@@ -297,7 +319,12 @@ const buildPaths = (rootDir: string): Config[`paths`] => {
297
319
  root: `build`,
298
320
  relative: {
299
321
  serverEntrypoint: `app.js`,
300
- assets: `assets`,
322
+ assets: {
323
+ root: `assets`,
324
+ relative: {
325
+ schemas: `schemas`,
326
+ },
327
+ },
301
328
  },
302
329
  },
303
330
  pages: `pages`,
@@ -311,7 +338,10 @@ const buildPaths = (rootDir: string): Config[`paths`] => {
311
338
  build: {
312
339
  root: buildAbsolute(`.`),
313
340
  serverEntrypoint: buildAbsolute(`app.js`),
314
- assets: buildAbsolute(`assets`),
341
+ assets: {
342
+ root: buildAbsolute(`assets`),
343
+ schemas: assetsAbsolute(`schemas`),
344
+ },
315
345
  },
316
346
  public: {
317
347
  root: publicAbsolute(`.`),
@@ -319,7 +349,14 @@ const buildPaths = (rootDir: string): Config[`paths`] => {
319
349
  },
320
350
  },
321
351
  },
322
- framework: packagePaths,
352
+ framework: {
353
+ ...packagePaths,
354
+ devAssets: {
355
+ relative: devAssetsRelative,
356
+ absolute: devAssetsAbsolute,
357
+ schemas: Path.join(devAssetsAbsolute, 'schemas'),
358
+ },
359
+ },
323
360
  }
324
361
  }
325
362
 
@@ -331,9 +368,9 @@ export interface Config {
331
368
  }
332
369
  server: {
333
370
  port: number
334
- }
335
- watch: {
336
- also: string[]
371
+ routes: {
372
+ assets: string
373
+ }
337
374
  }
338
375
  templateVariables: TemplateVariables
339
376
  schemaAugmentations: SchemaAugmentation.Augmentation[]
@@ -353,7 +390,12 @@ export interface Config {
353
390
  build: {
354
391
  root: string
355
392
  relative: {
356
- assets: string
393
+ assets: {
394
+ root: string
395
+ relative: {
396
+ schemas: string
397
+ }
398
+ }
357
399
  serverEntrypoint: string
358
400
  }
359
401
  }
@@ -366,7 +408,10 @@ export interface Config {
366
408
  absolute: {
367
409
  build: {
368
410
  root: string
369
- assets: string
411
+ assets: {
412
+ root: string
413
+ schemas: string
414
+ }
370
415
  serverEntrypoint: string
371
416
  }
372
417
  pages: string
@@ -376,7 +421,13 @@ export interface Config {
376
421
  }
377
422
  }
378
423
  }
379
- framework: PackagePaths
424
+ framework: PackagePaths & {
425
+ devAssets: {
426
+ relative: string
427
+ absolute: string
428
+ schemas: string
429
+ }
430
+ }
380
431
  }
381
432
  advanced: {
382
433
  isSelfContainedMode: boolean
@@ -392,15 +443,15 @@ const configInputDefaults: Config = {
392
443
  title: `My Developer Portal`,
393
444
  },
394
445
  schemaAugmentations: [],
395
- watch: {
396
- also: [],
397
- },
398
446
  build: {
399
447
  architecture: BuildArchitecture.enum.ssg,
400
448
  base: `/`,
401
449
  },
402
450
  server: {
403
451
  port: 3000,
452
+ routes: {
453
+ assets: '/assets',
454
+ },
404
455
  },
405
456
  schema: null,
406
457
  ssr: {
@@ -499,14 +550,13 @@ export const normalizeInput = async (
499
550
  config.advanced.explorer = configInput.advanced.explorer
500
551
  }
501
552
 
502
- if (configInput?.advanced?.watch?.also) {
503
- config.watch.also = configInput.advanced.watch.also
504
- }
505
-
506
553
  if (configInput?.server?.port !== undefined) {
507
554
  config.server.port = configInput.server.port
508
555
  }
509
556
 
557
+ // Server routes are not configurable by users yet, use defaults
558
+ // config.server.routes is already set from defaultConfig
559
+
510
560
  // Process warnings configuration
511
561
  if (configInput?.warnings?.interactiveWithoutSchema?.enabled !== undefined) {
512
562
  config.warnings.interactiveWithoutSchema.enabled = configInput.warnings.interactiveWithoutSchema.enabled
@@ -48,22 +48,6 @@ export const mergeInputs = (
48
48
  if (base.advanced ?? overrides.advanced) {
49
49
  merged.advanced = spreadShallow(base.advanced, overrides.advanced)
50
50
 
51
- // Merge advanced.watch config
52
- if (base.advanced?.watch ?? overrides.advanced?.watch) {
53
- merged.advanced.watch = spreadShallow(
54
- base.advanced?.watch,
55
- overrides.advanced?.watch,
56
- )
57
-
58
- // Merge watch.also arrays
59
- if (base.advanced?.watch?.also ?? overrides.advanced?.watch?.also) {
60
- merged.advanced.watch.also = [
61
- ...(base.advanced?.watch?.also ?? []),
62
- ...(overrides.advanced?.watch?.also ?? []),
63
- ]
64
- }
65
- }
66
-
67
51
  // Merge Vite configs if present
68
52
  if (base.advanced?.vite ?? overrides.advanced?.vite) {
69
53
  merged.advanced.vite = Vite.mergeConfig(
@@ -1,4 +1,4 @@
1
- import { z } from 'zod/v4'
1
+ import { z } from 'zod'
2
2
 
3
3
  /**
4
4
  * Schema for validating front matter content
@@ -1,3 +1,4 @@
1
+ export * as Introspection from './introspection/introspection.js'
1
2
  export * as Memory from './memory/memory.js'
2
3
  export * as SchemaDirectory from './schema-directory/schema-directory.js'
3
4
  export * as SchemaFile from './schema-file/schema-file.js'