graphql-code-generator: [TypeScript Compatibility] Fragments don't get a namespace generated
Using latest 1.0.8-alpha-57e0304d.7 I’m seeing differences with the way code for fragments is being generated:
Previously:
export namespace PushFields {
export type Fragment = {
__typename?: "Push";
id?: Maybe<string>;
timestamp?: Maybe<string>;
branch?: Maybe<string>;
before?: Maybe<Before>;
after?: Maybe<After>;
repo?: Maybe<Repo>;
commits?: Maybe<(Maybe<Commits>)[]>;
};
export type Before = {
__typename?: "Commit";
sha?: Maybe<string>;
message?: Maybe<string>;
committer?: Maybe<Committer>;
};
export type Committer = {
__typename?: "SCMId";
login?: Maybe<string>;
person?: Maybe<Person>;
};
export type Person = PersonFields.Fragment;
export type After = {
__typename?: "Commit";
sha?: Maybe<string>;
message?: Maybe<string>;
committer?: Maybe<_Committer>;
image?: Maybe<Image>;
images?: Maybe<(Maybe<Images>)[]>;
tags?: Maybe<(Maybe<Tags>)[]>;
};
export type _Committer = {
__typename?: "SCMId";
login?: Maybe<string>;
person?: Maybe<_Person>;
};
export type _Person = PersonFields.Fragment;
export type Image = {
__typename?: "DockerImage";
image?: Maybe<string>;
imageName?: Maybe<string>;
};
export type Images = {
__typename?: "DockerImage";
image?: Maybe<string>;
imageName?: Maybe<string>;
};
export type Tags = {
__typename?: "Tag";
name?: Maybe<string>;
description?: Maybe<string>;
timestamp?: Maybe<string>;
release?: Maybe<Release>;
};
export type Release = {
__typename?: "Release";
name?: Maybe<string>;
timestamp?: Maybe<string>;
};
export type Repo = CoreRepoFieldsAndChannels.Fragment;
export type Commits = {
__typename?: "Commit";
sha?: Maybe<string>;
timestamp?: Maybe<string>;
message?: Maybe<string>;
author?: Maybe<Author>;
};
export type Author = {
__typename?: "SCMId";
_id?: Maybe<number>;
login?: Maybe<string>;
name?: Maybe<string>;
};
}
With latest compatibility plugin we get:
export type PushFieldsFragment = { __typename?: "Push" } & Pick<
Push,
"id" | "timestamp" | "branch"
> & {
before: Maybe<
{ __typename?: "Commit" } & Pick<Commit, "sha" | "message"> & {
committer: Maybe<
{ __typename?: "SCMId" } & Pick<ScmId, "login"> & {
person: Maybe<{ __typename?: "Person" } & PersonFieldsFragment>;
}
>;
}
>;
after: Maybe<
{ __typename?: "Commit" } & Pick<Commit, "sha" | "message"> & {
committer: Maybe<
{ __typename?: "SCMId" } & Pick<ScmId, "login"> & {
person: Maybe<{ __typename?: "Person" } & PersonFieldsFragment>;
}
>;
image: Maybe<
{ __typename?: "DockerImage" } & Pick<
DockerImage,
"image" | "imageName"
>
>;
images: Maybe<
Array<
Maybe<
{ __typename?: "DockerImage" } & Pick<
DockerImage,
"image" | "imageName"
>
>
>
>;
tags: Maybe<
Array<
Maybe<
{ __typename?: "Tag" } & Pick<
Tag,
"name" | "description" | "timestamp"
> & {
release: Maybe<
{ __typename?: "Release" } & Pick<
Release,
"name" | "timestamp"
>
>;
}
>
>
>;
}
>;
repo: Maybe<{ __typename?: "Repo" } & CoreRepoFieldsAndChannelsFragment>;
commits: Maybe<
Array<
Maybe<
{ __typename?: "Commit" } & Pick<
Commit,
"sha" | "timestamp" | "message"
> & {
author: Maybe<
{ __typename?: "SCMId" } & Pick<ScmId, "_id" | "login" | "name">
>;
}
>
>
>;
};
and no further namespace. So this currently breaking backwards compatibility.
We have customer code that references PushFields with:
import {
PushFields,
} from "../../typings/types";
export async function some(push: PushFields.Fragment): Promise<void> {}
Do you think there’s something that can be done to solve this?
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 18 (9 by maintainers)
That worked!
Awesome, yes - hold on, I am sitting on the code now, so let me try 😃
Sure, here is a repo: https://github.com/janhartmann/graphql-code-generator-1686
Yes, latest and greatest