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.
- package/build/api/api.d.ts +1 -0
- package/build/api/api.d.ts.map +1 -1
- package/build/api/api.js +1 -0
- package/build/api/api.js.map +1 -1
- package/build/api/config/configurator.d.ts +20 -3
- package/build/api/config/configurator.d.ts.map +1 -1
- package/build/api/config/configurator.js +27 -3
- package/build/api/config/configurator.js.map +1 -1
- package/build/api/schema/data-sources/memory/memory.d.ts +2 -2
- package/build/api/schema/data-sources/memory/memory.d.ts.map +1 -1
- package/build/api/schema/data-sources/memory/memory.js +1 -3
- package/build/api/schema/data-sources/memory/memory.js.map +1 -1
- package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.d.ts +7 -3
- package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.d.ts.map +1 -1
- package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.js +15 -11
- package/build/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.js.map +1 -1
- package/build/api/schema/data-sources/schema-directory/schema-directory.d.ts +16 -7
- package/build/api/schema/data-sources/schema-directory/schema-directory.d.ts.map +1 -1
- package/build/api/schema/data-sources/schema-directory/schema-directory.js +26 -7
- package/build/api/schema/data-sources/schema-directory/schema-directory.js.map +1 -1
- package/build/api/schema/data-sources/schema-file/schema-file.d.ts +7 -2
- package/build/api/schema/data-sources/schema-file/schema-file.d.ts.map +1 -1
- package/build/api/schema/data-sources/schema-file/schema-file.js +13 -5
- package/build/api/schema/data-sources/schema-file/schema-file.js.map +1 -1
- package/build/api/schema/metadata.d.ts +8 -0
- package/build/api/schema/metadata.d.ts.map +1 -0
- package/build/api/schema/metadata.js +19 -0
- package/build/api/schema/metadata.js.map +1 -0
- package/build/api/schema/read.d.ts +3 -3
- package/build/api/schema/read.d.ts.map +1 -1
- package/build/api/schema/read.js.map +1 -1
- package/build/api/schema/schema.d.ts +33 -2
- package/build/api/schema/schema.d.ts.map +1 -1
- package/build/api/schema/schema.js +42 -0
- package/build/api/schema/schema.js.map +1 -1
- package/build/api/schema-source/index.d.ts +2 -0
- package/build/api/schema-source/index.d.ts.map +1 -0
- package/build/api/schema-source/index.js +2 -0
- package/build/api/schema-source/index.js.map +1 -0
- package/build/api/schema-source/schema-source.d.ts +33 -0
- package/build/api/schema-source/schema-source.d.ts.map +1 -0
- package/build/api/schema-source/schema-source.js +137 -0
- package/build/api/schema-source/schema-source.js.map +1 -0
- package/build/api/vite/plugins/core.d.ts +1 -0
- package/build/api/vite/plugins/core.d.ts.map +1 -1
- package/build/api/vite/plugins/core.js +21 -18
- package/build/api/vite/plugins/core.js.map +1 -1
- package/build/api/vite/plugins/schema-assets.d.ts +22 -0
- package/build/api/vite/plugins/schema-assets.d.ts.map +1 -0
- package/build/api/vite/plugins/schema-assets.js +269 -0
- package/build/api/vite/plugins/schema-assets.js.map +1 -0
- package/build/api/vite/plugins/serve.d.ts.map +1 -1
- package/build/api/vite/plugins/serve.js +11 -0
- package/build/api/vite/plugins/serve.js.map +1 -1
- package/build/lib/graphql-change/change-groups.d.ts +2 -0
- package/build/lib/graphql-change/change-groups.d.ts.map +1 -1
- package/build/lib/graphql-change/change-groups.js +54 -0
- package/build/lib/graphql-change/change-groups.js.map +1 -1
- package/build/lib/kit-temp.d.ts +9 -0
- package/build/lib/kit-temp.d.ts.map +1 -1
- package/build/lib/kit-temp.js +12 -0
- package/build/lib/kit-temp.js.map +1 -1
- package/build/lib/path-map/path-map.d.ts.map +1 -1
- package/build/lib/path-map/path-map.js +3 -1
- package/build/lib/path-map/path-map.js.map +1 -1
- package/build/project-data.d.ts +3 -11
- package/build/project-data.d.ts.map +1 -1
- package/build/template/components/Changelog.d.ts +3 -3
- package/build/template/components/Changelog.d.ts.map +1 -1
- package/build/template/components/Changelog.js +8 -84
- package/build/template/components/Changelog.js.map +1 -1
- package/build/template/components/CodeBlock.d.ts +2 -0
- package/build/template/components/CodeBlock.d.ts.map +1 -1
- package/build/template/components/CodeBlock.js +1 -4
- package/build/template/components/CodeBlock.js.map +1 -1
- package/build/template/components/ComponentDispatch.d.ts +34 -0
- package/build/template/components/ComponentDispatch.d.ts.map +1 -0
- package/build/template/components/ComponentDispatch.js +33 -0
- package/build/template/components/ComponentDispatch.js.map +1 -0
- package/build/template/components/ReferenceLink.d.ts +19 -0
- package/build/template/components/ReferenceLink.d.ts.map +1 -0
- package/build/template/components/ReferenceLink.js +19 -0
- package/build/template/components/ReferenceLink.js.map +1 -0
- package/build/template/components/TypeAnnotation.d.ts.map +1 -1
- package/build/template/components/TypeAnnotation.js +3 -3
- package/build/template/components/TypeAnnotation.js.map +1 -1
- package/build/template/components/TypeFieldsLinkList.d.ts.map +1 -1
- package/build/template/components/TypeFieldsLinkList.js +4 -4
- package/build/template/components/TypeFieldsLinkList.js.map +1 -1
- package/build/template/components/TypeIndex.js +2 -2
- package/build/template/components/TypeIndex.js.map +1 -1
- package/build/template/components/VersionSelector.d.ts +7 -0
- package/build/template/components/VersionSelector.d.ts.map +1 -0
- package/build/template/components/VersionSelector.js +30 -0
- package/build/template/components/VersionSelector.js.map +1 -0
- package/build/template/components/graphql/type-link.d.ts.map +1 -1
- package/build/template/components/graphql/type-link.js +2 -2
- package/build/template/components/graphql/type-link.js.map +1 -1
- package/build/template/hooks/useVersionPath.d.ts +6 -0
- package/build/template/hooks/useVersionPath.d.ts.map +1 -0
- package/build/template/hooks/useVersionPath.js +10 -0
- package/build/template/hooks/useVersionPath.js.map +1 -0
- package/build/template/layouts/ChangelogLayout.d.ts.map +1 -0
- package/build/template/{components → layouts}/ChangelogLayout.js +1 -1
- package/build/template/layouts/ChangelogLayout.js.map +1 -0
- package/build/template/layouts/index.d.ts +1 -0
- package/build/template/layouts/index.d.ts.map +1 -1
- package/build/template/layouts/index.js +1 -0
- package/build/template/layouts/index.js.map +1 -1
- package/build/template/lib/fetch-text.d.ts +8 -0
- package/build/template/lib/fetch-text.d.ts.map +1 -0
- package/build/template/lib/fetch-text.js +14 -0
- package/build/template/lib/fetch-text.js.map +1 -0
- package/build/template/lib/polen-url.d.ts +14 -0
- package/build/template/lib/polen-url.d.ts.map +1 -1
- package/build/template/lib/polen-url.js +16 -0
- package/build/template/lib/polen-url.js.map +1 -1
- package/build/template/lib/schema-utils/constants.d.ts +5 -0
- package/build/template/lib/schema-utils/constants.d.ts.map +1 -0
- package/build/template/lib/schema-utils/constants.js +5 -0
- package/build/template/lib/schema-utils/constants.js.map +1 -0
- package/build/template/lib/schema-utils/schema-utils.d.ts +15 -0
- package/build/template/lib/schema-utils/schema-utils.d.ts.map +1 -0
- package/build/template/lib/schema-utils/schema-utils.js +37 -0
- package/build/template/lib/schema-utils/schema-utils.js.map +1 -0
- package/build/template/routes/changelog.d.ts +4 -3
- package/build/template/routes/changelog.d.ts.map +1 -1
- package/build/template/routes/changelog.js +13 -7
- package/build/template/routes/changelog.js.map +1 -1
- package/build/template/routes/pages.d.ts +10 -0
- package/build/template/routes/pages.d.ts.map +1 -0
- package/build/template/routes/pages.js +76 -0
- package/build/template/routes/pages.js.map +1 -0
- package/build/template/routes/reference.$type.$field.js +1 -1
- package/build/template/routes/reference.$type.$field.js.map +1 -1
- package/build/template/routes/reference.$type.d.ts +4 -0
- package/build/template/routes/reference.$type.d.ts.map +1 -1
- package/build/template/routes/reference.$type.js +2 -0
- package/build/template/routes/reference.$type.js.map +1 -1
- package/build/template/routes/reference.d.ts +9 -3
- package/build/template/routes/reference.d.ts.map +1 -1
- package/build/template/routes/reference.js +30 -8
- package/build/template/routes/reference.js.map +1 -1
- package/build/template/routes/reference.version.$version.$type.$field.d.ts +6 -0
- package/build/template/routes/reference.version.$version.$type.$field.d.ts.map +1 -0
- package/build/template/routes/reference.version.$version.$type.$field.js +32 -0
- package/build/template/routes/reference.version.$version.$type.$field.js.map +1 -0
- package/build/template/routes/reference.version.$version.$type.d.ts +11 -0
- package/build/template/routes/reference.version.$version.$type.d.ts.map +1 -0
- package/build/template/routes/reference.version.$version.$type.js +26 -0
- package/build/template/routes/reference.version.$version.$type.js.map +1 -0
- package/build/template/routes/root.d.ts.map +1 -1
- package/build/template/routes/root.js +8 -72
- package/build/template/routes/root.js.map +1 -1
- package/build/template/server/app.d.ts +22 -1
- package/build/template/server/app.d.ts.map +1 -1
- package/build/template/server/app.js +19 -9
- package/build/template/server/app.js.map +1 -1
- package/build/template/server/main.js +9 -1
- package/build/template/server/main.js.map +1 -1
- package/build/template/server/ssg/generate.js +2 -2
- package/build/template/server/ssg/generate.js.map +1 -1
- package/build/template/server/ssg/get-route-paths.d.ts +1 -1
- package/build/template/server/ssg/get-route-paths.d.ts.map +1 -1
- package/build/template/server/ssg/get-route-paths.js +51 -27
- package/build/template/server/ssg/get-route-paths.js.map +1 -1
- package/build/template/sources/schema-source.d.ts +15 -0
- package/build/template/sources/schema-source.d.ts.map +1 -0
- package/build/template/sources/schema-source.js +63 -0
- package/build/template/sources/schema-source.js.map +1 -0
- package/package.json +1 -1
- package/src/api/api.ts +1 -0
- package/src/api/config/configurator.ts +51 -6
- package/src/api/schema/data-sources/memory/memory.ts +3 -5
- package/src/api/schema/data-sources/schema-directory/file-name-expression/file-name-expression.ts +29 -13
- package/src/api/schema/data-sources/schema-directory/schema-directory.ts +56 -16
- package/src/api/schema/data-sources/schema-file/schema-file.ts +16 -7
- package/src/api/schema/metadata.ts +23 -0
- package/src/api/schema/read.ts +3 -3
- package/src/api/schema/schema.ts +62 -2
- package/src/api/schema-source/index.ts +1 -0
- package/src/api/schema-source/schema-source.ts +189 -0
- package/src/api/vite/plugins/core.ts +23 -18
- package/src/api/vite/plugins/schema-assets.ts +317 -0
- package/src/api/vite/plugins/serve.ts +15 -8
- package/src/lib/graphql-change/change-groups.ts +57 -0
- package/src/lib/kit-temp.ts +13 -0
- package/src/lib/path-map/$.test.ts +22 -19
- package/src/lib/path-map/path-map.ts +3 -1
- package/src/project-data.ts +3 -11
- package/src/template/components/Changelog.tsx +16 -67
- package/src/template/components/CodeBlock.tsx +3 -5
- package/src/template/components/ComponentDispatch.tsx +42 -0
- package/src/template/components/ReferenceLink.tsx +34 -0
- package/src/template/components/TypeAnnotation.tsx +5 -7
- package/src/template/components/TypeFieldsLinkList.tsx +20 -23
- package/src/template/components/TypeIndex.tsx +10 -12
- package/src/template/components/VersionSelector.tsx +50 -0
- package/src/template/components/graphql/type-link.tsx +4 -3
- package/src/template/hooks/useVersionPath.ts +10 -0
- package/src/template/{components → layouts}/ChangelogLayout.tsx +1 -1
- package/src/template/layouts/index.ts +1 -0
- package/src/template/lib/fetch-text.ts +13 -0
- package/src/template/lib/polen-url.ts +20 -0
- package/src/template/lib/schema-utils/constants.ts +4 -0
- package/src/template/lib/schema-utils/schema-utils.ts +42 -0
- package/src/template/routes/changelog.tsx +17 -8
- package/src/template/routes/pages.tsx +109 -0
- package/src/template/routes/reference.$type.$field.tsx +1 -1
- package/src/template/routes/reference.$type.tsx +2 -0
- package/src/template/routes/reference.tsx +38 -6
- package/src/template/routes/reference.version.$version.$type.$field.tsx +35 -0
- package/src/template/routes/reference.version.$version.$type.tsx +30 -0
- package/src/template/routes/root.tsx +8 -109
- package/src/template/server/app.ts +47 -14
- package/src/template/server/main.ts +9 -1
- package/src/template/server/ssg/generate.ts +2 -2
- package/src/template/server/ssg/get-route-paths.ts +53 -27
- package/src/template/sources/schema-source.ts +68 -0
- package/build/lib/graphql-document/$$.d.ts +0 -5
- package/build/lib/graphql-document/$$.d.ts.map +0 -1
- package/build/lib/graphql-document/$$.js +0 -5
- package/build/lib/graphql-document/$$.js.map +0 -1
- package/build/lib/graphql-document/$.d.ts +0 -2
- package/build/lib/graphql-document/$.d.ts.map +0 -1
- package/build/lib/graphql-document/$.js +0 -2
- package/build/lib/graphql-document/$.js.map +0 -1
- package/build/lib/graphql-document/analysis.d.ts +0 -44
- package/build/lib/graphql-document/analysis.d.ts.map +0 -1
- package/build/lib/graphql-document/analysis.js +0 -361
- package/build/lib/graphql-document/analysis.js.map +0 -1
- package/build/lib/graphql-document/components/GraphQLDocument.d.ts +0 -38
- package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +0 -1
- package/build/lib/graphql-document/components/GraphQLDocument.js +0 -151
- package/build/lib/graphql-document/components/GraphQLDocument.js.map +0 -1
- package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +0 -7
- package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +0 -1
- package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +0 -27
- package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +0 -1
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +0 -33
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +0 -1
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +0 -50
- package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +0 -1
- package/build/lib/graphql-document/components/IdentifierLink.d.ts +0 -39
- package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +0 -1
- package/build/lib/graphql-document/components/IdentifierLink.js +0 -75
- package/build/lib/graphql-document/components/IdentifierLink.js.map +0 -1
- package/build/lib/graphql-document/components/graphql-document-styles.d.ts +0 -5
- package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +0 -1
- package/build/lib/graphql-document/components/graphql-document-styles.js +0 -144
- package/build/lib/graphql-document/components/graphql-document-styles.js.map +0 -1
- package/build/lib/graphql-document/components/index.d.ts +0 -5
- package/build/lib/graphql-document/components/index.d.ts.map +0 -1
- package/build/lib/graphql-document/components/index.js +0 -5
- package/build/lib/graphql-document/components/index.js.map +0 -1
- package/build/lib/graphql-document/example.d.ts +0 -25
- package/build/lib/graphql-document/example.d.ts.map +0 -1
- package/build/lib/graphql-document/example.js +0 -140
- package/build/lib/graphql-document/example.js.map +0 -1
- package/build/lib/graphql-document/graphql-document.d.ts +0 -35
- package/build/lib/graphql-document/graphql-document.d.ts.map +0 -1
- package/build/lib/graphql-document/graphql-document.js +0 -36
- package/build/lib/graphql-document/graphql-document.js.map +0 -1
- package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +0 -43
- package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +0 -1
- package/build/lib/graphql-document/hooks/use-tooltip-state.js +0 -132
- package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +0 -1
- package/build/lib/graphql-document/positioning-simple.d.ts +0 -63
- package/build/lib/graphql-document/positioning-simple.d.ts.map +0 -1
- package/build/lib/graphql-document/positioning-simple.js +0 -185
- package/build/lib/graphql-document/positioning-simple.js.map +0 -1
- package/build/lib/graphql-document/schema-context.d.ts +0 -8
- package/build/lib/graphql-document/schema-context.d.ts.map +0 -1
- package/build/lib/graphql-document/schema-context.js +0 -11
- package/build/lib/graphql-document/schema-context.js.map +0 -1
- package/build/lib/graphql-document/schema-integration.d.ts +0 -135
- package/build/lib/graphql-document/schema-integration.d.ts.map +0 -1
- package/build/lib/graphql-document/schema-integration.js +0 -328
- package/build/lib/graphql-document/schema-integration.js.map +0 -1
- package/build/lib/graphql-document/types.d.ts +0 -117
- package/build/lib/graphql-document/types.d.ts.map +0 -1
- package/build/lib/graphql-document/types.js +0 -2
- package/build/lib/graphql-document/types.js.map +0 -1
- package/build/template/components/ChangelogLayout.d.ts.map +0 -1
- package/build/template/components/ChangelogLayout.js.map +0 -1
- package/build/template/components/CodeHikePre.d.ts +0 -16
- package/build/template/components/CodeHikePre.d.ts.map +0 -1
- package/build/template/components/CodeHikePre.js +0 -37
- package/build/template/components/CodeHikePre.js.map +0 -1
- package/src/lib/graphql-document/$$.ts +0 -4
- package/src/lib/graphql-document/$.test.ts +0 -132
- package/src/lib/graphql-document/$.ts +0 -1
- package/src/lib/graphql-document/README.md +0 -102
- package/src/lib/graphql-document/analysis.ts +0 -415
- package/src/lib/graphql-document/components/GraphQLDocument.tsx +0 -265
- package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +0 -188
- package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +0 -46
- package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +0 -199
- package/src/lib/graphql-document/components/IdentifierLink.tsx +0 -160
- package/src/lib/graphql-document/components/graphql-document-styles.ts +0 -144
- package/src/lib/graphql-document/components/index.ts +0 -4
- package/src/lib/graphql-document/demo.md +0 -155
- package/src/lib/graphql-document/example.ts +0 -163
- package/src/lib/graphql-document/graphql-document.ts +0 -37
- package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +0 -76
- package/src/lib/graphql-document/hooks/use-tooltip-state.ts +0 -191
- package/src/lib/graphql-document/positioning-simple.test.ts +0 -248
- package/src/lib/graphql-document/positioning-simple.ts +0 -260
- package/src/lib/graphql-document/schema-context.tsx +0 -20
- package/src/lib/graphql-document/schema-integration.test.ts +0 -365
- package/src/lib/graphql-document/schema-integration.ts +0 -488
- package/src/lib/graphql-document/types.ts +0 -129
- package/src/template/components/CodeHikePre.tsx +0 -51
- /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 {
|
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 (
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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 +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 +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 +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 +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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"}
|