Skip to content

Commit

Permalink
snap
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonkuhrt committed Oct 22, 2024
1 parent d5c2dcc commit 0baf820
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 3,294 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,9 @@ export namespace Schema {
// --------------------------------------------------------------------------------------------------
//

/**
* Object documentation.
*/
export interface Foo extends $.OutputObject {
name: 'Foo'
fields: {
Expand Down Expand Up @@ -1422,6 +1425,9 @@ export namespace Schema {
// --------------------------------------------------------------------------------------------------
//

/**
* Union documentation.
*/
export interface FooBarUnion extends $.Union {
name: 'FooBarUnion'
members: [Bar, Foo]
Expand Down Expand Up @@ -1488,6 +1494,14 @@ export namespace Schema {
// --------------------------------------------------------------------------------------------------
//

/**
* Enum documentation.
*
* Members
* "A" - (DEPRECATED: Enum value A is deprecated.)
* "B" - Enum B member documentation.
* "C" - (DEPRECATED: Enum value C is deprecated.)
*/
export interface ABCEnum extends $.Enum {
name: 'ABCEnum'
members: ['A', 'B', 'C']
Expand Down
14 changes: 14 additions & 0 deletions src/generator/generator/__snapshots__/generate.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1897,6 +1897,9 @@ export namespace Schema {
// --------------------------------------------------------------------------------------------------
//

/**
* Object documentation.
*/
export interface Foo extends $.OutputObject {
name: 'Foo'
fields: {
Expand Down Expand Up @@ -2431,6 +2434,9 @@ export namespace Schema {
// --------------------------------------------------------------------------------------------------
//

/**
* Union documentation.
*/
export interface FooBarUnion extends $.Union {
name: 'FooBarUnion'
members: [Bar, Foo]
Expand Down Expand Up @@ -2497,6 +2503,14 @@ export namespace Schema {
// --------------------------------------------------------------------------------------------------
//

/**
* Enum documentation.
*
* Members
* "A" - (DEPRECATED: Enum value A is deprecated.)
* "B" - Enum B member documentation.
* "C" - (DEPRECATED: Enum value C is deprecated.)
*/
export interface ABCEnum extends $.Enum {
name: 'ABCEnum'
members: ['A', 'B', 'C']
Expand Down
122 changes: 71 additions & 51 deletions src/generator/generators/Schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,15 @@ const OutputObject = createCodeGenerator<{ type: Grafaid.Schema.ObjectType }>(({
}),
),
)
code(Code.esmExport(Code.tsInterface(type.name, null, `$.OutputObject`, {
name: Code.string(type.name),
fields: interfaceFields,
})))
code(Code.tsInterface$({
tsDoc: getTsDocContents(config, type),
name: type.name,
extends: `$.OutputObject`,
fields: {
name: Code.string(type.name),
fields: interfaceFields,
},
}))
code()

code(Code.esmExport(Code.tsNamespace(
Expand Down Expand Up @@ -142,83 +147,100 @@ const OutputObject = createCodeGenerator<{ type: Grafaid.Schema.ObjectType }>(({

const Enum = createCodeGenerator<{ type: Grafaid.Schema.EnumType }>(({ config, code, type }) => {
code(
Code.esmExport(
Code.tsInterface(type.name, null, `$.Enum`, {
Code.tsInterface$({
tsDoc: getTsDocContents(config, type),
export: true,
name: type.name,
extends: `$.Enum`,
fields: {
name: Code.string(type.name),
members: Code.tsTuple(type.getValues().map((_) => Code.string(_.name))),
membersUnion: Code.tsUnionItems(type.getValues().map((_) => Code.string(_.name))),
}),
),
},
}),
)
code()
})
const InputObject = createCodeGenerator<{ type: Grafaid.Schema.InputObjectType }>(({ config, code, type }) => {
code(
Code.esmExport(
Code.tsInterface(
type.name,
null,
`$.InputObject`,
{
name: Code.string(type.name),
isAllFieldsNullable: Code.boolean(Grafaid.Schema.isAllInputObjectFieldsNullable(type)),
fields: Object.fromEntries(
values(type.getFields()).map(field => {
return [field.name, `${renderName(type)}.${renderName(field)}`]
}),
),
},
),
),
Code.tsInterface$({
tsDoc: getTsDocContents(config, type),
name: type.name,
extends: `$.InputObject`,
fields: {
name: Code.string(type.name),
isAllFieldsNullable: Code.boolean(Grafaid.Schema.isAllInputObjectFieldsNullable(type)),
fields: Object.fromEntries(
values(type.getFields()).map(field => {
return [field.name, `${renderName(type)}.${renderName(field)}`]
}),
),
},
}),
)
code()
code(Code.esmExport(Code.tsNamespace(
type.name,
values(type.getFields())
.map((field) => {
const namedType = Grafaid.Schema.getNamedType(field.type)
return Code.tsInterface(field.name, null, `$.InputField`, {
name: Code.string(field.name),
inlineType: renderInlineType(field.type),
namedType: namedTypesTypeReference(namedType),
return Code.tsInterface$({
tsDoc: getTsDocContents(config, field),
name: field.name,
extends: `$.InputField`,
fields: {
name: Code.string(field.name),
inlineType: renderInlineType(field.type),
namedType: namedTypesTypeReference(namedType),
},
})
})
.map(Code.esmExport)
.join(`\n\n`),
)))
code()
})

const ScalarStandard = createCodeGenerator<{ type: Grafaid.Schema.ScalarType }>(({ config, code, type }) => {
const ScalarStandard = createCodeGenerator<{ type: Grafaid.Schema.ScalarType }>(({ code, type }) => {
code(Code.esmExport(Code.tsType(type.name, `$.StandardTypes.${type.name}`)))
code()
})

const ScalarCustom = createCodeGenerator<{ type: Grafaid.Schema.ScalarType }>(({ config, code, type }) => {
const ScalarCustom = createCodeGenerator<{ type: Grafaid.Schema.ScalarType }>(({ code, type }) => {
code(Code.esmExport(Code.tsType(type.name, `$Scalar.${type.name}`)))
code()
})

const Union = createCodeGenerator<{ type: Grafaid.Schema.UnionType }>(({ config, code, type }) => {
const memberNames = type.getTypes().map((_) => renderName(_))
code(Code.esmExport(Code.tsInterface(type.name, null, `$.Union`, {
name: Code.string(type.name),
members: Code.tsTuple(memberNames),
membersUnion: Code.tsUnionItems(memberNames),
membersIndex: Object.fromEntries(memberNames.map(n => [n, renderName(n)])),
})))
code(Code.tsInterface$({
tsDoc: getTsDocContents(config, type),
export: true,
name: type.name,
extends: `$.Union`,
fields: {
name: Code.string(type.name),
members: Code.tsTuple(memberNames),
membersUnion: Code.tsUnionItems(memberNames),
membersIndex: Object.fromEntries(memberNames.map(n => [n, renderName(n)])),
},
}))
code()
})

const Interface = createCodeGenerator<{ type: Grafaid.Schema.InterfaceType }>(({ config, code, type }) => {
const implementorTypes = Grafaid.Schema.KindMap.getInterfaceImplementors(config.schema.kindMap, type)
const implementorNames = implementorTypes.map((_) => _.name)
code(Code.esmExport(Code.tsInterface(type.name, null, `$.Interface`, {
name: Code.string(type.name),
implementors: Code.tsTuple(implementorNames),
implementorsUnion: Code.tsUnionItems(implementorNames),
implementorsIndex: Object.fromEntries(implementorNames.map(n => [n, renderName(n)])),
})))
code(Code.tsInterface$({
tsDoc: getTsDocContents(config, type),
name: type.name,
extends: `$.Interface`,
fields: {
name: Code.string(type.name),
implementors: Code.tsTuple(implementorNames),
implementorsUnion: Code.tsUnionItems(implementorNames),
implementorsIndex: Object.fromEntries(implementorNames.map(n => [n, renderName(n)])),
},
}))
code()
})

Expand Down Expand Up @@ -293,14 +315,12 @@ export const SchemaGenerator = createCodeGenerator(
// ---

code(
Code.esmExport(
Code.tsInterface(
identifiers.Schema,
`$Scalars extends ${identifiers.$$Utilities}.Schema.Scalar.ScalarMap = {}`,
`$`,
schema,
),
),
Code.tsInterface$({
name: identifiers.Schema,
typeParameters: `$Scalars extends ${identifiers.$$Utilities}.Schema.Scalar.ScalarMap = {}`,
extends: `$`,
fields: schema,
}),
)
},
)
18 changes: 1 addition & 17 deletions src/generator/generators/SelectionSets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Code } from '../../lib/Code.js'
import { Grafaid } from '../../lib/grafaid/__.js'
import { analyzeArgsNullability } from '../../lib/grafaid/schema/args.js'
import { RootTypeName } from '../../lib/grafaid/schema/schema.js'
import { entries, isString } from '../../lib/prelude.js'
import { entries } from '../../lib/prelude.js'
import { Tex } from '../../lib/tex/__.js'
import { borderThin } from '../../lib/tex/tex.js'
import { identifiers } from '../helpers/identifiers.js'
Expand Down Expand Up @@ -91,13 +91,6 @@ const renderKindUnion = createCodeGenerator<{ type: Grafaid.Schema.UnionType }>(
${H.__typenameField(`union`)}
`,
}))
// code(`
// export interface ${renderName(type)}<${$ScalarsTypeParameter}> {
// ${fragmentsInlineType}
// ${H.fragmentInlineField(type)}
// ${H.__typenameField(`union`)}
// }
// `)

code(H.fragmentInlineInterface(type))
code()
Expand Down Expand Up @@ -405,15 +398,6 @@ namespace H {
return `${type} | Array<${type}>`
}

// export const tsInterface = (name: Name, extendsClause: null | (string | null)[], fields: string) => {
// return Code.tsInterface$({
// export: true,
// name: referenceSig(name),
// extends: extendsClause,
// fields,
// })
// }

export const tsType = (name: Name, type: string) => {
return tsTypeTerminal(referenceSig(name), type)
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/Code.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ export namespace Code {
},
) => {
const tsDoc_ = tsDoc ? TSDoc(tsDoc) + `\n` : ``
const export__ = export_ ? `export ` : ``
const export__ = export_ === false ? `` : `export `
const typeParametersClause = tsTypeParameters(typeParameters ?? null)
const extends__ = toArray(extends_).filter(_ => Boolean(_))
const extends___ = extends__.length > 0
Expand Down
Loading

0 comments on commit 0baf820

Please sign in to comment.