Skip to content

Commit f65b813

Browse files
authored
refactor: consolidate duplicate OperationType implementations (#1444) (#1449)
1 parent ed50ae7 commit f65b813

75 files changed

Lines changed: 273 additions & 299 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/pr.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ jobs:
2828
- uses: actions/checkout@v4
2929
- uses: ./.github/actions/setup
3030
- run: pnpm check:types
31+
check-generated:
32+
runs-on: ubuntu-latest
33+
steps:
34+
- uses: actions/checkout@v4
35+
- uses: ./.github/actions/setup
36+
- run: pnpm build
37+
- run: pnpm gen:graffle
38+
- name: Check generated files are up-to-date
39+
run: git diff --exit-code src/extensions/SchemaErrors/__tests__/fixture/graffle/
3140
types-examples:
3241
runs-on: ubuntu-latest
3342
steps:

examples/$/graffle/modules/document.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ export interface QueryBuilder {
441441
*
442442
* @see {@link https://graffle.js.org/guides/static-generation | Static Generation Guide}
443443
*/
444-
export const query: QueryBuilder = createStaticRootType(GraphqlKit.Document.Ast.OperationType.QUERY, { sddm }) as any
444+
export const query: QueryBuilder = createStaticRootType(GraphqlKit.Schema.OperationType.QUERY, { sddm }) as any
445445

446446
/**
447447
* Static mutation builder for compile-time GraphQL document generation.
@@ -569,6 +569,4 @@ export interface MutationBuilder {
569569
*
570570
* @see {@link https://graffle.js.org/guides/static-generation | Static Generation Guide}
571571
*/
572-
export const mutation: MutationBuilder = createStaticRootType(GraphqlKit.Document.Ast.OperationType.MUTATION, {
573-
sddm,
574-
}) as any
572+
export const mutation: MutationBuilder = createStaticRootType(GraphqlKit.Schema.OperationType.MUTATION, { sddm }) as any

examples/$/graffle/modules/schema/$.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export * as Schema from './$$.js'
77

88
export interface Schema<$Scalars extends $.Schema.Scalars.Registry = $$Scalar.$Registry> {
99
name: $$Data.Name
10-
operationsAvailable: ['query', 'mutation']
10+
operationsAvailable: [$.GraphqlKit.Schema.OperationType.QUERY, $.GraphqlKit.Schema.OperationType.MUTATION]
1111
RootUnion:
1212
| $Types.Query
1313
| $Types.Mutation

examples/$/graffle/modules/select.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export namespace Select {
8383
export type Query<$SelectionSet extends $$SelectionSets.Query> = $$Utilities.Docpar.Object.InferResult.Operation<
8484
$SelectionSet,
8585
$$Schema.Schema,
86-
$$Utilities.GraphqlKit.Document.Ast.OperationType.QUERY
86+
$$Utilities.GraphqlKit.Schema.OperationType.QUERY
8787
>
8888
/**
8989
* Root mutation type for modifying Pokemon data.
@@ -94,7 +94,7 @@ export namespace Select {
9494
$$Utilities.Docpar.Object.InferResult.Operation<
9595
$SelectionSet,
9696
$$Schema.Schema,
97-
$$Utilities.GraphqlKit.Document.Ast.OperationType.MUTATION
97+
$$Utilities.GraphqlKit.Schema.OperationType.MUTATION
9898
>
9999

100100
// OutputObject

src/docpar/_.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ const $ = Var.$
1010
// Static Root Type Builders (Runtime)
1111
// ==================================================================================================
1212

13-
const query = Docpar.Object.Static.createStaticRootType(GraphqlKit.Document.Ast.OperationType.QUERY) as any
14-
const mutation = Docpar.Object.Static.createStaticRootType(GraphqlKit.Document.Ast.OperationType.MUTATION) as any
13+
const query = Docpar.Object.Static.createStaticRootType(GraphqlKit.Schema.OperationType.QUERY) as any
14+
const mutation = Docpar.Object.Static.createStaticRootType(GraphqlKit.Schema.OperationType.MUTATION) as any
1515
const subscription = Docpar.Object.Static.createStaticRootType(
16-
GraphqlKit.Document.Ast.OperationType.SUBSCRIPTION,
16+
GraphqlKit.Schema.OperationType.SUBSCRIPTION,
1717
) as any
1818

1919
// dprint-ignore
@@ -79,7 +79,7 @@ test('static document builder > hoistArguments: false - inline args NOT hoisted,
7979

8080
test('static document builder > manual createStaticRootType usage - runtime works without types', () => {
8181
// Manual usage without generated types - factory returns untyped documents
82-
const manualQuery = Docpar.Object.Static.createStaticRootType(GraphqlKit.Document.Ast.OperationType.QUERY) as any
82+
const manualQuery = Docpar.Object.Static.createStaticRootType(GraphqlKit.Schema.OperationType.QUERY) as any
8383
const doc = manualQuery.someField({ id: true })
8484

8585
// Runtime behavior is identical to generated usage

src/docpar/core/sddm/SchemaDrivenDataMap.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@ declare global {
1010
// Types are defined in this namespace so that they can be globally augmented.
1111

1212
export interface SchemaDrivenDataMapOperations {
13-
[GraphqlKit.Document.Ast.OperationType.MUTATION]?: SchemaDrivenDataMap.OutputObject
14-
[GraphqlKit.Document.Ast.OperationType.QUERY]?: SchemaDrivenDataMap.OutputObject
15-
[GraphqlKit.Document.Ast.OperationType.SUBSCRIPTION]?: SchemaDrivenDataMap.OutputObject
13+
[GraphqlKit.Schema.OperationType.MUTATION]?: SchemaDrivenDataMap.OutputObject
14+
[GraphqlKit.Schema.OperationType.QUERY]?: SchemaDrivenDataMap.OutputObject
15+
[GraphqlKit.Schema.OperationType.SUBSCRIPTION]?: SchemaDrivenDataMap.OutputObject
1616
}
1717

1818
export interface SchemaDrivenDataMapOperationsWithQuery extends SchemaDrivenDataMapOperations {
19-
[GraphqlKit.Document.Ast.OperationType.QUERY]: SchemaDrivenDataMap.OutputObject
19+
[GraphqlKit.Schema.OperationType.QUERY]: SchemaDrivenDataMap.OutputObject
2020
}
2121

2222
export interface SchemaDrivenDataMapOperationsWithMutation extends SchemaDrivenDataMapOperations {
23-
[GraphqlKit.Document.Ast.OperationType.MUTATION]: SchemaDrivenDataMap.OutputObject
23+
[GraphqlKit.Schema.OperationType.MUTATION]: SchemaDrivenDataMap.OutputObject
2424
}
2525

2626
export interface SchemaDrivenDataMapOperationsWithSubscription extends SchemaDrivenDataMapOperations {
27-
[GraphqlKit.Document.Ast.OperationType.SUBSCRIPTION]: SchemaDrivenDataMap.OutputObject
27+
[GraphqlKit.Schema.OperationType.SUBSCRIPTION]: SchemaDrivenDataMap.OutputObject
2828
}
2929

3030
export interface SchemaDrivenDataMap {

src/docpar/core/sddm/mapVariables.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export const mapVariablesByTypeNames = (input: MapVariablesByTypeNamesInput): Gr
7070
const varValue = variables[varName]
7171
if (varValue === undefined) continue
7272

73-
const namedType = GraphqlKit.Document.getNamedType(parameter.type)
73+
const namedType = GraphqlKit.Schema.Ast.getNamedType(parameter.type)
7474
const sddmNamedType = sddm.types[namedType.name.value]
7575
if (!sddmNamedType) continue
7676

src/docpar/object/InferResult/OutputField.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,23 @@ type FieldType<
2323
$SelectionSet,
2424
$Node,
2525
> =
26-
$Node extends GraphqlKit.Schema.Type.OutputObject ? $SelectionSet extends object
27-
? OutputObjectLike<$SelectionSet, $Schema, $Node>
28-
: Ts.Err.StaticError<'When $Node extends GraphqlKit.Schema.Type.OutputObject then $SelectionSet must extend object', { location: 'FieldType'; $Type: $Node; $SelectionSet: $SelectionSet; $Schema:$Schema } > :
29-
$Node extends GraphqlKit.Schema.Type.Scalar.ScalarCodecless ? Codec.GetDecoded<GetCodecForCodecless<$Schema, $Node>> :
30-
$Node extends GraphqlKit.Schema.Type.__typename ? $Node['value'] :
31-
[GraphqlKit.Schema.Type.ResolveLeafType<$Node>] extends [never] ? $Node extends GraphqlKit.Schema.Type.Interface
32-
? Interface<$SelectionSet, $Schema, $Node>
33-
: $Node extends GraphqlKit.Schema.Type.Union
34-
? Union<$SelectionSet, $Schema, $Node>
35-
: Ts.Err.StaticError<`Unknown type`, { location: 'FieldType'; $Type: $Node; $SelectionSet: $SelectionSet; $Schema:$Schema }> :
36-
GraphqlKit.Schema.Type.ResolveLeafType<$Node>
26+
$Node extends GraphqlKit.Schema.Type.OutputObject
27+
? (
28+
$SelectionSet extends object
29+
? OutputObjectLike<$SelectionSet, $Schema, $Node>
30+
: Ts.Err.StaticError<'When $Node extends GraphqlKit.Schema.Type.OutputObject then $SelectionSet must extend object', { location: 'FieldType'; $Type: $Node; $SelectionSet: $SelectionSet; $Schema:$Schema } >
31+
) :
32+
$Node extends GraphqlKit.Schema.Type.Scalar.ScalarCodecless ? Codec.GetDecoded<GetCodecForCodecless<$Schema, $Node>> :
33+
$Node extends GraphqlKit.Schema.Type.__typename ? $Node['value'] :
34+
[GraphqlKit.Schema.Type.ResolveLeafType<$Node>] extends [never]
35+
? (
36+
$Node extends GraphqlKit.Schema.Type.Interface
37+
? Interface<$SelectionSet, $Schema, $Node>
38+
: $Node extends GraphqlKit.Schema.Type.Union
39+
? Union<$SelectionSet, $Schema, $Node>
40+
: Ts.Err.StaticError<`Unknown type`, { location: 'FieldType'; $Type: $Node; $SelectionSet: $SelectionSet; $Schema:$Schema }>
41+
)
42+
: GraphqlKit.Schema.Type.ResolveLeafType<$Node>
3743

3844
// dprint-ignore
3945
type GetCodecForCodecless<

src/docpar/object/InferResult/operation.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ import type { OutputObjectLike } from './OutputObjectLike.js'
44

55
// dprint-ignore
66
export type OperationQuery<$SelectionSet extends object, $Schema> =
7-
Operation<$SelectionSet, $Schema, GraphqlKit.Document.Ast.OperationType.QUERY>
7+
Operation<$SelectionSet, $Schema, GraphqlKit.Schema.OperationType.QUERY>
88

99
// dprint-ignore
1010
export type OperationMutation<$SelectionSet extends object, $Schema> =
11-
Operation<$SelectionSet, $Schema, GraphqlKit.Document.Ast.OperationType.MUTATION>
11+
Operation<$SelectionSet, $Schema, GraphqlKit.Schema.OperationType.MUTATION>
1212

1313
// dprint-ignore
1414
export type OperationSubscription<$SelectionSet extends object, $Schema> =
15-
Operation<$SelectionSet, $Schema, GraphqlKit.Document.Ast.OperationType.SUBSCRIPTION>
15+
Operation<$SelectionSet, $Schema, GraphqlKit.Schema.OperationType.SUBSCRIPTION>
1616

1717
export type Operation<
1818
$SelectionSet extends object,
1919
$Schema,
20-
$OperationType extends GraphqlKit.Document.Ast.OperationType.OperationType,
20+
$OperationType extends GraphqlKit.Schema.OperationType.OperationType,
2121
> = OutputObjectLike<
2222
$SelectionSet,
2323
$Schema,

src/docpar/object/Parse.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export type Parse<
3434
InferOperation<
3535
$Document[operationType][operationName],
3636
$Context,
37-
GraphqlKit.Document.Ast.OperationType.FromString<operationType & string>,
37+
GraphqlKit.Schema.OperationType.FromString<operationType & string>,
3838
operationName
3939
>
4040
}[keyof $Document[operationType] & string] // Extract union from operation names
@@ -84,7 +84,7 @@ export type InferOperations<
8484
* type Op = InferOperation<
8585
* { id: true, name: true },
8686
* MyContext,
87-
* GraphqlKit.Document.Ast.OperationType.QUERY,
87+
* GraphqlKit.Schema.OperationType.QUERY,
8888
* 'getUser'
8989
* >
9090
* // Result: Operation<'getUser', { id: string, name: string }, {}>
@@ -94,7 +94,7 @@ export type InferOperations<
9494
export type InferOperation<
9595
$DocOp,
9696
$Context,
97-
$OperationType extends GraphqlKit.Document.Ast.OperationType.OperationType,
97+
$OperationType extends GraphqlKit.Schema.OperationType.OperationType,
9898
$OperationName,
9999
> =
100100
$DocOp extends object

0 commit comments

Comments
 (0)