polen 0.10.0 → 0.11.0-next.1

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 (314) 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 +20 -3
  6. package/build/api/config/configurator.d.ts.map +1 -1
  7. package/build/api/config/configurator.js +27 -3
  8. package/build/api/config/configurator.js.map +1 -1
  9. package/build/api/schema/data-sources/memory/memory.d.ts +2 -2
  10. package/build/api/schema/data-sources/memory/memory.d.ts.map +1 -1
  11. package/build/api/schema/data-sources/memory/memory.js +1 -3
  12. package/build/api/schema/data-sources/memory/memory.js.map +1 -1
  13. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.d.ts +7 -3
  14. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.d.ts.map +1 -1
  15. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.js +15 -11
  16. package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.js.map +1 -1
  17. package/build/api/schema/data-sources/schema-directory/schema-directory.d.ts +16 -7
  18. package/build/api/schema/data-sources/schema-directory/schema-directory.d.ts.map +1 -1
  19. package/build/api/schema/data-sources/schema-directory/schema-directory.js +26 -7
  20. package/build/api/schema/data-sources/schema-directory/schema-directory.js.map +1 -1
  21. package/build/api/schema/data-sources/schema-file/schema-file.d.ts +7 -2
  22. package/build/api/schema/data-sources/schema-file/schema-file.d.ts.map +1 -1
  23. package/build/api/schema/data-sources/schema-file/schema-file.js +13 -5
  24. package/build/api/schema/data-sources/schema-file/schema-file.js.map +1 -1
  25. package/build/api/schema/metadata.d.ts +8 -0
  26. package/build/api/schema/metadata.d.ts.map +1 -0
  27. package/build/api/schema/metadata.js +19 -0
  28. package/build/api/schema/metadata.js.map +1 -0
  29. package/build/api/schema/read.d.ts +3 -3
  30. package/build/api/schema/read.d.ts.map +1 -1
  31. package/build/api/schema/read.js.map +1 -1
  32. package/build/api/schema/schema.d.ts +33 -2
  33. package/build/api/schema/schema.d.ts.map +1 -1
  34. package/build/api/schema/schema.js +42 -0
  35. package/build/api/schema/schema.js.map +1 -1
  36. package/build/api/schema-source/index.d.ts +2 -0
  37. package/build/api/schema-source/index.d.ts.map +1 -0
  38. package/build/api/schema-source/index.js +2 -0
  39. package/build/api/schema-source/index.js.map +1 -0
  40. package/build/api/schema-source/schema-source.d.ts +33 -0
  41. package/build/api/schema-source/schema-source.d.ts.map +1 -0
  42. package/build/api/schema-source/schema-source.js +137 -0
  43. package/build/api/schema-source/schema-source.js.map +1 -0
  44. package/build/api/vite/plugins/core.d.ts +1 -0
  45. package/build/api/vite/plugins/core.d.ts.map +1 -1
  46. package/build/api/vite/plugins/core.js +21 -18
  47. package/build/api/vite/plugins/core.js.map +1 -1
  48. package/build/api/vite/plugins/schema-assets.d.ts +22 -0
  49. package/build/api/vite/plugins/schema-assets.d.ts.map +1 -0
  50. package/build/api/vite/plugins/schema-assets.js +269 -0
  51. package/build/api/vite/plugins/schema-assets.js.map +1 -0
  52. package/build/api/vite/plugins/serve.d.ts.map +1 -1
  53. package/build/api/vite/plugins/serve.js +11 -0
  54. package/build/api/vite/plugins/serve.js.map +1 -1
  55. package/build/lib/graphql-change/change-groups.d.ts +2 -0
  56. package/build/lib/graphql-change/change-groups.d.ts.map +1 -1
  57. package/build/lib/graphql-change/change-groups.js +54 -0
  58. package/build/lib/graphql-change/change-groups.js.map +1 -1
  59. package/build/lib/kit-temp.d.ts +9 -0
  60. package/build/lib/kit-temp.d.ts.map +1 -1
  61. package/build/lib/kit-temp.js +12 -0
  62. package/build/lib/kit-temp.js.map +1 -1
  63. package/build/lib/path-map/path-map.d.ts.map +1 -1
  64. package/build/lib/path-map/path-map.js +3 -1
  65. package/build/lib/path-map/path-map.js.map +1 -1
  66. package/build/project-data.d.ts +3 -11
  67. package/build/project-data.d.ts.map +1 -1
  68. package/build/template/components/Changelog.d.ts +3 -3
  69. package/build/template/components/Changelog.d.ts.map +1 -1
  70. package/build/template/components/Changelog.js +8 -84
  71. package/build/template/components/Changelog.js.map +1 -1
  72. package/build/template/components/CodeBlock.d.ts +2 -0
  73. package/build/template/components/CodeBlock.d.ts.map +1 -1
  74. package/build/template/components/CodeBlock.js +1 -4
  75. package/build/template/components/CodeBlock.js.map +1 -1
  76. package/build/template/components/ComponentDispatch.d.ts +34 -0
  77. package/build/template/components/ComponentDispatch.d.ts.map +1 -0
  78. package/build/template/components/ComponentDispatch.js +33 -0
  79. package/build/template/components/ComponentDispatch.js.map +1 -0
  80. package/build/template/components/ReferenceLink.d.ts +19 -0
  81. package/build/template/components/ReferenceLink.d.ts.map +1 -0
  82. package/build/template/components/ReferenceLink.js +19 -0
  83. package/build/template/components/ReferenceLink.js.map +1 -0
  84. package/build/template/components/TypeAnnotation.d.ts.map +1 -1
  85. package/build/template/components/TypeAnnotation.js +3 -3
  86. package/build/template/components/TypeAnnotation.js.map +1 -1
  87. package/build/template/components/TypeFieldsLinkList.d.ts.map +1 -1
  88. package/build/template/components/TypeFieldsLinkList.js +4 -4
  89. package/build/template/components/TypeFieldsLinkList.js.map +1 -1
  90. package/build/template/components/TypeIndex.js +2 -2
  91. package/build/template/components/TypeIndex.js.map +1 -1
  92. package/build/template/components/VersionSelector.d.ts +7 -0
  93. package/build/template/components/VersionSelector.d.ts.map +1 -0
  94. package/build/template/components/VersionSelector.js +30 -0
  95. package/build/template/components/VersionSelector.js.map +1 -0
  96. package/build/template/components/graphql/type-link.d.ts.map +1 -1
  97. package/build/template/components/graphql/type-link.js +2 -2
  98. package/build/template/components/graphql/type-link.js.map +1 -1
  99. package/build/template/hooks/useVersionPath.d.ts +6 -0
  100. package/build/template/hooks/useVersionPath.d.ts.map +1 -0
  101. package/build/template/hooks/useVersionPath.js +10 -0
  102. package/build/template/hooks/useVersionPath.js.map +1 -0
  103. package/build/template/layouts/ChangelogLayout.d.ts.map +1 -0
  104. package/build/template/{components → layouts}/ChangelogLayout.js +1 -1
  105. package/build/template/layouts/ChangelogLayout.js.map +1 -0
  106. package/build/template/layouts/index.d.ts +1 -0
  107. package/build/template/layouts/index.d.ts.map +1 -1
  108. package/build/template/layouts/index.js +1 -0
  109. package/build/template/layouts/index.js.map +1 -1
  110. package/build/template/lib/fetch-text.d.ts +8 -0
  111. package/build/template/lib/fetch-text.d.ts.map +1 -0
  112. package/build/template/lib/fetch-text.js +14 -0
  113. package/build/template/lib/fetch-text.js.map +1 -0
  114. package/build/template/lib/polen-url.d.ts +14 -0
  115. package/build/template/lib/polen-url.d.ts.map +1 -1
  116. package/build/template/lib/polen-url.js +16 -0
  117. package/build/template/lib/polen-url.js.map +1 -1
  118. package/build/template/lib/schema-utils/constants.d.ts +5 -0
  119. package/build/template/lib/schema-utils/constants.d.ts.map +1 -0
  120. package/build/template/lib/schema-utils/constants.js +5 -0
  121. package/build/template/lib/schema-utils/constants.js.map +1 -0
  122. package/build/template/lib/schema-utils/schema-utils.d.ts +15 -0
  123. package/build/template/lib/schema-utils/schema-utils.d.ts.map +1 -0
  124. package/build/template/lib/schema-utils/schema-utils.js +37 -0
  125. package/build/template/lib/schema-utils/schema-utils.js.map +1 -0
  126. package/build/template/routes/changelog.d.ts +4 -3
  127. package/build/template/routes/changelog.d.ts.map +1 -1
  128. package/build/template/routes/changelog.js +13 -7
  129. package/build/template/routes/changelog.js.map +1 -1
  130. package/build/template/routes/pages.d.ts +10 -0
  131. package/build/template/routes/pages.d.ts.map +1 -0
  132. package/build/template/routes/pages.js +76 -0
  133. package/build/template/routes/pages.js.map +1 -0
  134. package/build/template/routes/reference.$type.$field.js +1 -1
  135. package/build/template/routes/reference.$type.$field.js.map +1 -1
  136. package/build/template/routes/reference.$type.d.ts +4 -0
  137. package/build/template/routes/reference.$type.d.ts.map +1 -1
  138. package/build/template/routes/reference.$type.js +2 -0
  139. package/build/template/routes/reference.$type.js.map +1 -1
  140. package/build/template/routes/reference.d.ts +9 -3
  141. package/build/template/routes/reference.d.ts.map +1 -1
  142. package/build/template/routes/reference.js +30 -8
  143. package/build/template/routes/reference.js.map +1 -1
  144. package/build/template/routes/reference.version.$version.$type.$field.d.ts +6 -0
  145. package/build/template/routes/reference.version.$version.$type.$field.d.ts.map +1 -0
  146. package/build/template/routes/reference.version.$version.$type.$field.js +32 -0
  147. package/build/template/routes/reference.version.$version.$type.$field.js.map +1 -0
  148. package/build/template/routes/reference.version.$version.$type.d.ts +11 -0
  149. package/build/template/routes/reference.version.$version.$type.d.ts.map +1 -0
  150. package/build/template/routes/reference.version.$version.$type.js +26 -0
  151. package/build/template/routes/reference.version.$version.$type.js.map +1 -0
  152. package/build/template/routes/root.d.ts.map +1 -1
  153. package/build/template/routes/root.js +8 -72
  154. package/build/template/routes/root.js.map +1 -1
  155. package/build/template/server/app.d.ts +22 -1
  156. package/build/template/server/app.d.ts.map +1 -1
  157. package/build/template/server/app.js +19 -9
  158. package/build/template/server/app.js.map +1 -1
  159. package/build/template/server/main.js +9 -1
  160. package/build/template/server/main.js.map +1 -1
  161. package/build/template/server/ssg/generate.js +2 -2
  162. package/build/template/server/ssg/generate.js.map +1 -1
  163. package/build/template/server/ssg/get-route-paths.d.ts +1 -1
  164. package/build/template/server/ssg/get-route-paths.d.ts.map +1 -1
  165. package/build/template/server/ssg/get-route-paths.js +51 -27
  166. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  167. package/build/template/sources/schema-source.d.ts +15 -0
  168. package/build/template/sources/schema-source.d.ts.map +1 -0
  169. package/build/template/sources/schema-source.js +63 -0
  170. package/build/template/sources/schema-source.js.map +1 -0
  171. package/package.json +1 -1
  172. package/src/api/api.ts +1 -0
  173. package/src/api/config/configurator.ts +51 -6
  174. package/src/api/schema/data-sources/memory/memory.ts +3 -5
  175. package/src/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.ts +29 -13
  176. package/src/api/schema/data-sources/schema-directory/schema-directory.ts +56 -16
  177. package/src/api/schema/data-sources/schema-file/schema-file.ts +16 -7
  178. package/src/api/schema/metadata.ts +23 -0
  179. package/src/api/schema/read.ts +3 -3
  180. package/src/api/schema/schema.ts +62 -2
  181. package/src/api/schema-source/index.ts +1 -0
  182. package/src/api/schema-source/schema-source.ts +189 -0
  183. package/src/api/vite/plugins/core.ts +23 -18
  184. package/src/api/vite/plugins/schema-assets.ts +317 -0
  185. package/src/api/vite/plugins/serve.ts +15 -8
  186. package/src/lib/graphql-change/change-groups.ts +57 -0
  187. package/src/lib/kit-temp.ts +13 -0
  188. package/src/lib/path-map/$.test.ts +22 -19
  189. package/src/lib/path-map/path-map.ts +3 -1
  190. package/src/project-data.ts +3 -11
  191. package/src/template/components/Changelog.tsx +16 -67
  192. package/src/template/components/CodeBlock.tsx +3 -5
  193. package/src/template/components/ComponentDispatch.tsx +42 -0
  194. package/src/template/components/ReferenceLink.tsx +34 -0
  195. package/src/template/components/TypeAnnotation.tsx +5 -7
  196. package/src/template/components/TypeFieldsLinkList.tsx +20 -23
  197. package/src/template/components/TypeIndex.tsx +10 -12
  198. package/src/template/components/VersionSelector.tsx +50 -0
  199. package/src/template/components/graphql/type-link.tsx +4 -3
  200. package/src/template/hooks/useVersionPath.ts +10 -0
  201. package/src/template/{components → layouts}/ChangelogLayout.tsx +1 -1
  202. package/src/template/layouts/index.ts +1 -0
  203. package/src/template/lib/fetch-text.ts +13 -0
  204. package/src/template/lib/polen-url.ts +20 -0
  205. package/src/template/lib/schema-utils/constants.ts +4 -0
  206. package/src/template/lib/schema-utils/schema-utils.ts +42 -0
  207. package/src/template/routes/changelog.tsx +17 -8
  208. package/src/template/routes/pages.tsx +109 -0
  209. package/src/template/routes/reference.$type.$field.tsx +1 -1
  210. package/src/template/routes/reference.$type.tsx +2 -0
  211. package/src/template/routes/reference.tsx +38 -6
  212. package/src/template/routes/reference.version.$version.$type.$field.tsx +35 -0
  213. package/src/template/routes/reference.version.$version.$type.tsx +30 -0
  214. package/src/template/routes/root.tsx +8 -109
  215. package/src/template/server/app.ts +47 -14
  216. package/src/template/server/main.ts +9 -1
  217. package/src/template/server/ssg/generate.ts +2 -2
  218. package/src/template/server/ssg/get-route-paths.ts +53 -27
  219. package/src/template/sources/schema-source.ts +68 -0
  220. package/build/lib/graphql-document/$$.d.ts +0 -5
  221. package/build/lib/graphql-document/$$.d.ts.map +0 -1
  222. package/build/lib/graphql-document/$$.js +0 -5
  223. package/build/lib/graphql-document/$$.js.map +0 -1
  224. package/build/lib/graphql-document/$.d.ts +0 -2
  225. package/build/lib/graphql-document/$.d.ts.map +0 -1
  226. package/build/lib/graphql-document/$.js +0 -2
  227. package/build/lib/graphql-document/$.js.map +0 -1
  228. package/build/lib/graphql-document/analysis.d.ts +0 -44
  229. package/build/lib/graphql-document/analysis.d.ts.map +0 -1
  230. package/build/lib/graphql-document/analysis.js +0 -361
  231. package/build/lib/graphql-document/analysis.js.map +0 -1
  232. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -38
  233. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +0 -1
  234. package/build/lib/graphql-document/components/GraphQLDocument.js +0 -151
  235. package/build/lib/graphql-document/components/GraphQLDocument.js.map +0 -1
  236. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +0 -7
  237. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +0 -1
  238. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +0 -27
  239. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +0 -1
  240. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +0 -33
  241. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +0 -1
  242. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +0 -50
  243. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +0 -1
  244. package/build/lib/graphql-document/components/IdentifierLink.d.ts +0 -39
  245. package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +0 -1
  246. package/build/lib/graphql-document/components/IdentifierLink.js +0 -75
  247. package/build/lib/graphql-document/components/IdentifierLink.js.map +0 -1
  248. package/build/lib/graphql-document/components/graphql-document-styles.d.ts +0 -5
  249. package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +0 -1
  250. package/build/lib/graphql-document/components/graphql-document-styles.js +0 -144
  251. package/build/lib/graphql-document/components/graphql-document-styles.js.map +0 -1
  252. package/build/lib/graphql-document/components/index.d.ts +0 -5
  253. package/build/lib/graphql-document/components/index.d.ts.map +0 -1
  254. package/build/lib/graphql-document/components/index.js +0 -5
  255. package/build/lib/graphql-document/components/index.js.map +0 -1
  256. package/build/lib/graphql-document/example.d.ts +0 -25
  257. package/build/lib/graphql-document/example.d.ts.map +0 -1
  258. package/build/lib/graphql-document/example.js +0 -140
  259. package/build/lib/graphql-document/example.js.map +0 -1
  260. package/build/lib/graphql-document/graphql-document.d.ts +0 -35
  261. package/build/lib/graphql-document/graphql-document.d.ts.map +0 -1
  262. package/build/lib/graphql-document/graphql-document.js +0 -36
  263. package/build/lib/graphql-document/graphql-document.js.map +0 -1
  264. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +0 -43
  265. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +0 -1
  266. package/build/lib/graphql-document/hooks/use-tooltip-state.js +0 -132
  267. package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +0 -1
  268. package/build/lib/graphql-document/positioning-simple.d.ts +0 -63
  269. package/build/lib/graphql-document/positioning-simple.d.ts.map +0 -1
  270. package/build/lib/graphql-document/positioning-simple.js +0 -185
  271. package/build/lib/graphql-document/positioning-simple.js.map +0 -1
  272. package/build/lib/graphql-document/schema-context.d.ts +0 -8
  273. package/build/lib/graphql-document/schema-context.d.ts.map +0 -1
  274. package/build/lib/graphql-document/schema-context.js +0 -11
  275. package/build/lib/graphql-document/schema-context.js.map +0 -1
  276. package/build/lib/graphql-document/schema-integration.d.ts +0 -135
  277. package/build/lib/graphql-document/schema-integration.d.ts.map +0 -1
  278. package/build/lib/graphql-document/schema-integration.js +0 -328
  279. package/build/lib/graphql-document/schema-integration.js.map +0 -1
  280. package/build/lib/graphql-document/types.d.ts +0 -117
  281. package/build/lib/graphql-document/types.d.ts.map +0 -1
  282. package/build/lib/graphql-document/types.js +0 -2
  283. package/build/lib/graphql-document/types.js.map +0 -1
  284. package/build/template/components/ChangelogLayout.d.ts.map +0 -1
  285. package/build/template/components/ChangelogLayout.js.map +0 -1
  286. package/build/template/components/CodeHikePre.d.ts +0 -16
  287. package/build/template/components/CodeHikePre.d.ts.map +0 -1
  288. package/build/template/components/CodeHikePre.js +0 -37
  289. package/build/template/components/CodeHikePre.js.map +0 -1
  290. package/src/lib/graphql-document/$$.ts +0 -4
  291. package/src/lib/graphql-document/$.test.ts +0 -132
  292. package/src/lib/graphql-document/$.ts +0 -1
  293. package/src/lib/graphql-document/README.md +0 -102
  294. package/src/lib/graphql-document/analysis.ts +0 -415
  295. package/src/lib/graphql-document/components/GraphQLDocument.tsx +0 -265
  296. package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +0 -188
  297. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +0 -46
  298. package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +0 -199
  299. package/src/lib/graphql-document/components/IdentifierLink.tsx +0 -160
  300. package/src/lib/graphql-document/components/graphql-document-styles.ts +0 -144
  301. package/src/lib/graphql-document/components/index.ts +0 -4
  302. package/src/lib/graphql-document/demo.md +0 -155
  303. package/src/lib/graphql-document/example.ts +0 -163
  304. package/src/lib/graphql-document/graphql-document.ts +0 -37
  305. package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +0 -76
  306. package/src/lib/graphql-document/hooks/use-tooltip-state.ts +0 -191
  307. package/src/lib/graphql-document/positioning-simple.test.ts +0 -248
  308. package/src/lib/graphql-document/positioning-simple.ts +0 -260
  309. package/src/lib/graphql-document/schema-context.tsx +0 -20
  310. package/src/lib/graphql-document/schema-integration.test.ts +0 -365
  311. package/src/lib/graphql-document/schema-integration.ts +0 -488
  312. package/src/lib/graphql-document/types.ts +0 -129
  313. package/src/template/components/CodeHikePre.tsx +0 -51
  314. /package/build/template/{components → layouts}/ChangelogLayout.d.ts +0 -0
@@ -14,7 +14,7 @@ import { getRoutesPaths } from './get-route-paths.js'
14
14
  export const generate = async (view: ReactRouter.StaticHandler) => {
15
15
  const debug = debugPolen.sub(`ssg`)
16
16
 
17
- const routePaths = getRoutesPaths()
17
+ const routePaths = await getRoutesPaths()
18
18
  const totalPaths = routePaths.length
19
19
  debug(`start`, { totalPaths })
20
20
 
@@ -76,7 +76,7 @@ export const generate = async (view: ReactRouter.StaticHandler) => {
76
76
 
77
77
  const ssgResult = await Hono.SSG.toSSG(batchApp, NodeFs, {
78
78
  concurrency: 5, // Reduced concurrency for memory efficiency
79
- dir: PROJECT_DATA.paths.relative.build.root,
79
+ dir: PROJECT_DATA.paths.project.relative.build.root,
80
80
  })
81
81
 
82
82
  if (!ssgResult.success) {
@@ -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
 
@@ -10,37 +11,62 @@ import { routes } from '../../routes.js'
10
11
  // Maybe we can figure something out too.
11
12
  const knownParameterizedRouteExpressions = {
12
13
  reference_type: `/reference/:type`,
14
+ reference_versioned_type: `/reference/version/:version/:type`,
13
15
  }
14
16
 
15
- export const getRoutesPaths = (): string[] => {
17
+ export const getRoutesPaths = async (): Promise<string[]> => {
16
18
  const paths = new Set<string>()
17
19
  const routeExpressions = ReactRouterAid.getRouteExpressions(routes)
18
20
 
21
+ // Helper function to load schema from filesystem and add type paths
22
+ const addTypePathsForVersion = async (version: string, pathPrefix: string) => {
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
+
28
+ visit(schemaAst, {
29
+ ObjectTypeDefinition(node) {
30
+ paths.add(`${pathPrefix}/${node.name.value}`)
31
+ },
32
+ InterfaceTypeDefinition(node) {
33
+ paths.add(`${pathPrefix}/${node.name.value}`)
34
+ },
35
+ EnumTypeDefinition(node) {
36
+ paths.add(`${pathPrefix}/${node.name.value}`)
37
+ },
38
+ InputObjectTypeDefinition(node) {
39
+ paths.add(`${pathPrefix}/${node.name.value}`)
40
+ },
41
+ UnionTypeDefinition(node) {
42
+ paths.add(`${pathPrefix}/${node.name.value}`)
43
+ },
44
+ ScalarTypeDefinition(node) {
45
+ paths.add(`${pathPrefix}/${node.name.value}`)
46
+ },
47
+ })
48
+ } catch (error) {
49
+ throw new Error(`SSG failed to load schema for version ${version}. Ensure schema assets are built. ${error}`)
50
+ }
51
+ }
52
+
53
+ const schemaMetadataPath = NodePath.join(PROJECT_DATA.paths.project.absolute.build.assets.schemas, 'metadata.json')
54
+
55
+ const schemaMetadata = await Api.Schema.getMetadata(schemaMetadataPath)
56
+ const { hasSchema, versions: availableVersions } = schemaMetadata
57
+
19
58
  for (const exp of routeExpressions) {
20
59
  if (exp === knownParameterizedRouteExpressions.reference_type) {
21
- if (PROJECT_DATA.schema) {
22
- const schema = PROJECT_DATA.schema.versions[0].after
23
- const ast = Grafaid.Schema.AST.parse(Grafaid.Schema.print(schema))
24
- visit(ast, {
25
- ObjectTypeDefinition(node) {
26
- paths.add(`/reference/${node.name.value}`)
27
- },
28
- InterfaceTypeDefinition(node) {
29
- paths.add(`/reference/${node.name.value}`)
30
- },
31
- EnumTypeDefinition(node) {
32
- paths.add(`/reference/${node.name.value}`)
33
- },
34
- InputObjectTypeDefinition(node) {
35
- paths.add(`/reference/${node.name.value}`)
36
- },
37
- UnionTypeDefinition(node) {
38
- paths.add(`/reference/${node.name.value}`)
39
- },
40
- ScalarTypeDefinition(node) {
41
- paths.add(`/reference/${node.name.value}`)
42
- },
43
- })
60
+ if (hasSchema) {
61
+ // Add paths for latest version (no version in URL)
62
+ await addTypePathsForVersion(Api.Schema.VERSION_LATEST, `/reference`)
63
+ }
64
+ } else if (exp === knownParameterizedRouteExpressions.reference_versioned_type) {
65
+ if (hasSchema) {
66
+ // Add paths for all versions using new route structure
67
+ for (const version of availableVersions) {
68
+ await addTypePathsForVersion(version, `/reference/version/${version}`)
69
+ }
44
70
  }
45
71
  } else if (ReactRouterAid.isParameterizedPath(exp)) {
46
72
  throw new Error(`Unhandled parameterized path: ${exp}`)
@@ -0,0 +1,68 @@
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
+
6
+ // Environment-specific IO implementation
7
+ const io = import.meta.env.SSR
8
+ ? {
9
+ // Server-side: Read from filesystem
10
+ read: async (path: string) => {
11
+ // Dynamic import to keep fs out of client bundle
12
+ const { readFile } = await import('node:fs/promises')
13
+
14
+ // Extract the path after the assets route
15
+ // e.g., "/assets/schemas/latest.json" -> "schemas/latest.json"
16
+ const assetsRoute = PROJECT_DATA.server.routes.assets
17
+ const routePattern = new RegExp(`^${assetsRoute}/(.+)$`)
18
+ const match = path.match(routePattern)
19
+ const assetPath = match ? match[1] : path
20
+
21
+ // In SSR, we need to read from the correct location
22
+ // During dev, assets are served from Polen's node_modules
23
+ // In production, they're in the build output directory
24
+ let fullPath: string
25
+ if (import.meta.env.DEV) {
26
+ // Development: Read from Polen's Vite cache
27
+ fullPath = `${PROJECT_DATA.paths.framework.devAssets.absolute}/${assetPath}`
28
+ } else {
29
+ // Production: Read from build output
30
+ // The server runs from the project root, and assets are in build/assets/
31
+ fullPath =
32
+ `${PROJECT_DATA.paths.project.relative.build.root}/${PROJECT_DATA.paths.project.relative.build.relative.assets.root}/${assetPath}`
33
+ }
34
+
35
+ return readFile(fullPath, 'utf-8')
36
+ },
37
+ }
38
+ : {
39
+ // Client-side: Fetch from HTTP
40
+ read: async (path: string) => {
41
+ const response = await fetch(path)
42
+ if (!response.ok) {
43
+ throw new Error(`Failed to fetch: ${path} (${response.status} ${response.statusText})`)
44
+ }
45
+ return response.text()
46
+ },
47
+ }
48
+
49
+ // Create and export the source object directly
50
+ export const schemaSource = createSchemaSource({
51
+ io,
52
+ versions: PROJECT_SCHEMA_METADATA.versions,
53
+ assetsPath: polenUrlPathAssets(),
54
+ })
55
+
56
+ // HMR cache invalidation for development
57
+ if (import.meta.hot) {
58
+ import.meta.hot.on('polen:schema-invalidate', () => {
59
+ console.log('[HMR] Schema cache invalidated')
60
+ schemaSource.clearCache()
61
+
62
+ // Brute force approach: reload the page to ensure fresh data
63
+ // This guarantees all components see the updated schema immediately
64
+ // TODO: When we have reactive data fetching, remove this reload
65
+ // and let the reactive system handle updates gracefully
66
+ window.location.reload()
67
+ })
68
+ }
@@ -1,5 +0,0 @@
1
- export * from './analysis.js';
2
- export * from './positioning-simple.js';
3
- export * from './schema-integration.js';
4
- export * from './types.js';
5
- //# sourceMappingURL=$$.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"$$.d.ts","sourceRoot":"","sources":["../../../src/lib/graphql-document/$$.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA"}
@@ -1,5 +0,0 @@
1
- export * from './analysis.js';
2
- export * from './positioning-simple.js';
3
- export * from './schema-integration.js';
4
- export * from './types.js';
5
- //# sourceMappingURL=$$.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"$$.js","sourceRoot":"","sources":["../../../src/lib/graphql-document/$$.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA"}
@@ -1,2 +0,0 @@
1
- export * as GraphQLDocument from './graphql-document.js';
2
- //# sourceMappingURL=$.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"$.d.ts","sourceRoot":"","sources":["../../../src/lib/graphql-document/$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAA"}
@@ -1,2 +0,0 @@
1
- export * as GraphQLDocument from './graphql-document.js';
2
- //# sourceMappingURL=$.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"$.js","sourceRoot":"","sources":["../../../src/lib/graphql-document/$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,uBAAuB,CAAA"}
@@ -1,44 +0,0 @@
1
- import { type DocumentNode, type GraphQLError, type GraphQLSchema } from 'graphql';
2
- import type { AnalysisConfig, AnalysisResult, GraphQLAnalyzer, IdentifierMap } from './types.js';
3
- /**
4
- * Default GraphQL document analyzer implementation
5
- */
6
- export declare class DefaultGraphQLAnalyzer implements GraphQLAnalyzer {
7
- /**
8
- * Parse a GraphQL document string into an AST
9
- */
10
- parse(source: string): DocumentNode;
11
- /**
12
- * Validate a GraphQL document against a schema
13
- */
14
- validateAgainstSchema(ast: DocumentNode, schema: GraphQLSchema): GraphQLError[];
15
- /**
16
- * Extract all identifiers from a GraphQL AST
17
- */
18
- extractIdentifiers(ast: DocumentNode, config?: AnalysisConfig): IdentifierMap;
19
- /**
20
- * Perform complete analysis of a GraphQL document
21
- */
22
- analyze(source: string, config?: AnalysisConfig): AnalysisResult;
23
- private addIdentifier;
24
- private getPosition;
25
- private getTypePosition;
26
- private extractTypeName;
27
- private isObjectField;
28
- private inferReturnType;
29
- private createContext;
30
- private createIdentifierMap;
31
- }
32
- /**
33
- * Default analyzer instance
34
- */
35
- export declare const analyzer: DefaultGraphQLAnalyzer;
36
- /**
37
- * Convenience function to analyze a GraphQL document
38
- */
39
- export declare const analyze: (source: string, config?: AnalysisConfig) => AnalysisResult;
40
- /**
41
- * Convenience function to extract identifiers from a GraphQL document
42
- */
43
- export declare const extractIdentifiers: (source: string, config?: AnalysisConfig) => IdentifierMap;
44
- //# sourceMappingURL=analysis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/lib/graphql-document/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAGjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAMnB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EACd,eAAe,EAGf,aAAa,EACd,MAAM,YAAY,CAAA;AAEnB;;GAEG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAUnC;;OAEG;IACH,qBAAqB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,EAAE;IAI/E;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,GAAE,cAAmB,GAAG,aAAa;IA4MjF;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,cAAmB,GAAG,cAAc;IA+BpE,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,mBAAmB;CAsB5B;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,wBAA+B,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,SAAS,cAAc,KAAG,cAEjE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,SAAS,cAAc,KAAG,aAG5E,CAAA"}
@@ -1,361 +0,0 @@
1
- import { parse, validate, visit, } from 'graphql';
2
- /**
3
- * Default GraphQL document analyzer implementation
4
- */
5
- export class DefaultGraphQLAnalyzer {
6
- /**
7
- * Parse a GraphQL document string into an AST
8
- */
9
- parse(source) {
10
- try {
11
- return parse(source, {
12
- noLocation: false, // We need location info for positioning
13
- });
14
- }
15
- catch (error) {
16
- throw new Error(`Failed to parse GraphQL document: ${error instanceof Error ? error.message : `Unknown error`}`);
17
- }
18
- }
19
- /**
20
- * Validate a GraphQL document against a schema
21
- */
22
- validateAgainstSchema(ast, schema) {
23
- return [...validate(schema, ast)];
24
- }
25
- /**
26
- * Extract all identifiers from a GraphQL AST
27
- */
28
- extractIdentifiers(ast, config = {}) {
29
- const identifiers = [];
30
- const errors = [];
31
- const schema = config.schema;
32
- // Context tracking during traversal
33
- let currentOperationType;
34
- let currentOperationName;
35
- let currentFragment;
36
- let selectionPath = [];
37
- let parentTypes = [];
38
- // Helper function to create context
39
- const createContext = () => {
40
- return {
41
- operationType: currentOperationType,
42
- operationName: currentOperationName,
43
- inFragment: currentFragment,
44
- selectionPath: [...selectionPath],
45
- };
46
- };
47
- visit(ast, {
48
- OperationDefinition: {
49
- enter: (node) => {
50
- currentOperationType = node.operation;
51
- currentOperationName = node.name?.value;
52
- selectionPath = [];
53
- // Set the root type based on operation type
54
- if (schema) {
55
- if (node.operation === `query` && schema.getQueryType()) {
56
- parentTypes = [schema.getQueryType().name];
57
- }
58
- else if (node.operation === `mutation` && schema.getMutationType()) {
59
- parentTypes = [schema.getMutationType().name];
60
- }
61
- else if (node.operation === `subscription` && schema.getSubscriptionType()) {
62
- parentTypes = [schema.getSubscriptionType().name];
63
- }
64
- else {
65
- parentTypes = [];
66
- }
67
- }
68
- else {
69
- // Fallback to default root type names
70
- if (node.operation === `query`) {
71
- parentTypes = [`Query`];
72
- }
73
- else if (node.operation === `mutation`) {
74
- parentTypes = [`Mutation`];
75
- }
76
- else if (node.operation === `subscription`) {
77
- parentTypes = [`Subscription`];
78
- }
79
- else {
80
- parentTypes = [];
81
- }
82
- }
83
- },
84
- leave: () => {
85
- currentOperationType = undefined;
86
- currentOperationName = undefined;
87
- parentTypes = [];
88
- },
89
- },
90
- FragmentDefinition: {
91
- enter: (node) => {
92
- currentFragment = node.name.value;
93
- selectionPath = [];
94
- parentTypes = [node.typeCondition.name.value];
95
- // Add fragment name as identifier
96
- this.addIdentifier(identifiers, {
97
- name: node.name.value,
98
- kind: `Fragment`,
99
- position: this.getPosition(node.name),
100
- schemaPath: [node.name.value],
101
- context: createContext(),
102
- });
103
- // Add type condition as identifier
104
- this.addIdentifier(identifiers, {
105
- name: node.typeCondition.name.value,
106
- kind: `Type`,
107
- position: this.getPosition(node.typeCondition.name),
108
- schemaPath: [node.typeCondition.name.value],
109
- context: createContext(),
110
- });
111
- },
112
- leave: () => {
113
- currentFragment = undefined;
114
- parentTypes = [];
115
- },
116
- },
117
- Field: {
118
- enter: (node) => {
119
- const fieldName = node.name.value;
120
- const parentType = parentTypes[parentTypes.length - 1];
121
- selectionPath.push(fieldName);
122
- this.addIdentifier(identifiers, {
123
- name: fieldName,
124
- kind: `Field`,
125
- position: this.getPosition(node.name),
126
- parentType,
127
- schemaPath: parentType ? [parentType, fieldName] : [fieldName],
128
- context: createContext(),
129
- });
130
- // Track parent type for nested selections
131
- // Resolve the field's return type from schema if available
132
- let pushedType = false;
133
- if (schema && parentType) {
134
- const type = schema.getType(parentType);
135
- if (type && (`getFields` in type)) {
136
- const fields = type.getFields();
137
- const field = fields[fieldName];
138
- if (field) {
139
- // Get the base type name (unwrap NonNull and List wrappers)
140
- let fieldType = field.type;
141
- while (fieldType.ofType) {
142
- fieldType = fieldType.ofType;
143
- }
144
- if (fieldType.name) {
145
- parentTypes.push(fieldType.name);
146
- pushedType = true;
147
- }
148
- }
149
- }
150
- }
151
- else if (this.isObjectField(fieldName)) {
152
- // Fallback to inference if no schema
153
- const inferredType = this.inferReturnType(parentType, fieldName);
154
- parentTypes.push(inferredType);
155
- pushedType = true;
156
- } // Store whether we pushed a type for this field
157
- ;
158
- node._pushedType = pushedType;
159
- },
160
- leave: (node) => {
161
- selectionPath.pop();
162
- // Remove parent type if we added one in enter
163
- if (node._pushedType) {
164
- parentTypes.pop();
165
- }
166
- },
167
- },
168
- Argument: {
169
- enter: (node) => {
170
- const argName = node.name.value;
171
- const parentType = parentTypes[parentTypes.length - 1];
172
- const fieldName = selectionPath[selectionPath.length - 1];
173
- this.addIdentifier(identifiers, {
174
- name: argName,
175
- kind: `Argument`,
176
- position: this.getPosition(node.name),
177
- parentType,
178
- schemaPath: parentType && fieldName
179
- ? [parentType, fieldName, argName]
180
- : [argName],
181
- context: createContext(),
182
- });
183
- },
184
- },
185
- VariableDefinition: {
186
- enter: (node) => {
187
- this.addIdentifier(identifiers, {
188
- name: node.variable.name.value,
189
- kind: `Variable`,
190
- position: this.getPosition(node.variable.name),
191
- schemaPath: [node.variable.name.value],
192
- context: createContext(),
193
- });
194
- // Also add the type reference
195
- const typeName = this.extractTypeName(node.type);
196
- if (typeName) {
197
- this.addIdentifier(identifiers, {
198
- name: typeName,
199
- kind: `Type`,
200
- position: this.getTypePosition(node.type),
201
- schemaPath: [typeName],
202
- context: createContext(),
203
- });
204
- }
205
- },
206
- },
207
- Directive: {
208
- enter: (node) => {
209
- this.addIdentifier(identifiers, {
210
- name: node.name.value,
211
- kind: `Directive`,
212
- position: this.getPosition(node.name),
213
- schemaPath: [node.name.value],
214
- context: createContext(),
215
- });
216
- },
217
- },
218
- });
219
- return this.createIdentifierMap(identifiers, errors);
220
- }
221
- /**
222
- * Perform complete analysis of a GraphQL document
223
- */
224
- analyze(source, config = {}) {
225
- try {
226
- const ast = this.parse(source);
227
- const identifiers = this.extractIdentifiers(ast, config);
228
- let validationErrors = [];
229
- if (config.validateAgainstSchema && config.schema) {
230
- validationErrors = this.validateAgainstSchema(ast, config.schema);
231
- }
232
- return {
233
- ast,
234
- identifiers,
235
- isValid: validationErrors.length === 0,
236
- errors: validationErrors,
237
- };
238
- }
239
- catch (error) {
240
- return {
241
- ast: { kind: `Document`, definitions: [] },
242
- identifiers: this.createIdentifierMap([], [{
243
- message: error instanceof Error ? error.message : `Unknown parsing error`,
244
- severity: `error`,
245
- }]),
246
- isValid: false,
247
- errors: [],
248
- };
249
- }
250
- }
251
- // Private helper methods
252
- addIdentifier(identifiers, identifier) {
253
- identifiers.push(identifier);
254
- }
255
- getPosition(node) {
256
- const loc = node.loc;
257
- if (!loc) {
258
- return { start: 0, end: 0, line: 1, column: 1 };
259
- }
260
- return {
261
- start: loc.start,
262
- end: loc.end,
263
- line: loc.startToken.line,
264
- column: loc.startToken.column,
265
- };
266
- }
267
- getTypePosition(node) {
268
- // For type nodes, we need to extract the base type name position
269
- // This is a simplified implementation
270
- return this.getPosition(node);
271
- }
272
- extractTypeName(typeNode) {
273
- // Recursively extract the base type name from wrapped types (NonNull, List)
274
- if (typeNode.kind === `NamedType`) {
275
- return typeNode.name.value;
276
- }
277
- if (typeNode.kind === `NonNullType` || typeNode.kind === `ListType`) {
278
- return this.extractTypeName(typeNode.type);
279
- }
280
- return null;
281
- }
282
- isObjectField(fieldName) {
283
- // This is only used as a fallback when no schema is available
284
- // Common patterns for object-returning fields
285
- const objectFieldPatterns = [
286
- `user`,
287
- `users`,
288
- `post`,
289
- `posts`,
290
- `comment`,
291
- `comments`,
292
- `profile`,
293
- `settings`,
294
- `organization`,
295
- `project`,
296
- `target`,
297
- `member`,
298
- `members`,
299
- `node`,
300
- `nodes`,
301
- `edge`,
302
- `edges`,
303
- ];
304
- return objectFieldPatterns.some(pattern => fieldName.toLowerCase().includes(pattern));
305
- }
306
- inferReturnType(parentType, fieldName) {
307
- // Simplified type inference - in real implementation would use schema
308
- if (fieldName === `user`)
309
- return `User`;
310
- if (fieldName === `posts`)
311
- return `Post`;
312
- if (fieldName === `comments`)
313
- return `Comment`;
314
- return fieldName.charAt(0).toUpperCase() + fieldName.slice(1);
315
- }
316
- createContext(operationType, operationName, inFragment, selectionPath = []) {
317
- return {
318
- operationType,
319
- operationName,
320
- inFragment,
321
- selectionPath: [...selectionPath],
322
- };
323
- }
324
- createIdentifierMap(identifiers, errors) {
325
- const byPosition = new Map();
326
- const byKind = new Map();
327
- for (const identifier of identifiers) {
328
- // Index by position
329
- byPosition.set(identifier.position.start, identifier);
330
- // Group by kind
331
- if (!byKind.has(identifier.kind)) {
332
- byKind.set(identifier.kind, []);
333
- }
334
- byKind.get(identifier.kind).push(identifier);
335
- }
336
- return {
337
- byPosition,
338
- byKind,
339
- errors,
340
- all: identifiers,
341
- };
342
- }
343
- }
344
- /**
345
- * Default analyzer instance
346
- */
347
- export const analyzer = new DefaultGraphQLAnalyzer();
348
- /**
349
- * Convenience function to analyze a GraphQL document
350
- */
351
- export const analyze = (source, config) => {
352
- return analyzer.analyze(source, config);
353
- };
354
- /**
355
- * Convenience function to extract identifiers from a GraphQL document
356
- */
357
- export const extractIdentifiers = (source, config) => {
358
- const ast = analyzer.parse(source);
359
- return analyzer.extractIdentifiers(ast, config);
360
- };
361
- //# sourceMappingURL=analysis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/lib/graphql-document/analysis.ts"],"names":[],"mappings":"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"}