mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
* Upgrade to suport version 8 * Change version * Merge branch 'update-relay-compiler-v8' of github.com:thicodes/DefinitelyTyped into feat/relay-8 * solve lint problems * upgrade versions of typescript to 3.4 Co-authored-by: Renan Machado <renan.mav@hotmail.com>
73 lines
2.5 KiB
TypeScript
73 lines
2.5 KiB
TypeScript
import {
|
|
CompilerContext,
|
|
Fragment,
|
|
Root,
|
|
Printer as GraphQLIRPrinter,
|
|
Schema
|
|
} from 'relay-compiler';
|
|
import * as InlineFragmentsTransform from 'relay-compiler/lib/transforms/InlineFragmentsTransform';
|
|
import * as SkipRedundantNodesTransform from 'relay-compiler/lib/transforms/SkipRedundantNodesTransform';
|
|
import * as ApplyFragmentArgumentTransform from 'relay-compiler/lib/transforms/ApplyFragmentArgumentTransform';
|
|
import * as FlattenTransform from 'relay-compiler/lib/transforms/FlattenTransform';
|
|
import * as ConnectionTransform from 'relay-compiler/lib/transforms/ConnectionTransform';
|
|
import { getLanguagePlugin } from 'relay-compiler/lib/bin/RelayCompilerMain';
|
|
import { visit } from 'relay-compiler/lib/core/IRVisitor';
|
|
|
|
const TestSchema: Schema = (undefined as any) as Schema;
|
|
|
|
declare function parseGraphQLText(schema: Schema, text: string): {
|
|
definitions: ReadonlyArray<Fragment | Root>,
|
|
schema: Schema
|
|
};
|
|
|
|
const schema = TestSchema.extend([
|
|
/* GraphQL */ `
|
|
directive @connection(key: String!) on FIELD
|
|
directive @client on FIELD
|
|
`,
|
|
]);
|
|
|
|
const text = `
|
|
fragment ScalarField on User {
|
|
traits
|
|
}
|
|
`;
|
|
|
|
const { definitions, schema: extendedSchema } = parseGraphQLText(schema, text);
|
|
const queryCompilerContext = new CompilerContext(extendedSchema)
|
|
.addAll(definitions)
|
|
.applyTransforms([
|
|
ApplyFragmentArgumentTransform.transform,
|
|
InlineFragmentsTransform.transform,
|
|
FlattenTransform.transformWithOptions({ flattenAbstractTypes: false }),
|
|
SkipRedundantNodesTransform.transform,
|
|
ConnectionTransform.transform,
|
|
]);
|
|
|
|
queryCompilerContext.documents().map(doc => GraphQLIRPrinter.print(doc));
|
|
|
|
getLanguagePlugin(() => ({
|
|
findGraphQLTags: (text, filePath) =>
|
|
text
|
|
.split(filePath)
|
|
.map(template => ({ template, keyName: filePath, sourceLocationOffset: { line: 24, column: 42 } })),
|
|
formatModule: options => options.docText || '',
|
|
inputExtensions: ['foo'],
|
|
outputExtension: 'bar',
|
|
typeGenerator: {
|
|
transforms: [ApplyFragmentArgumentTransform.transform],
|
|
generate: (schema, node, options) => {
|
|
visit(node, {
|
|
Fragment(fragment) {
|
|
return {
|
|
...fragment,
|
|
name: 'BestFragmentName',
|
|
};
|
|
},
|
|
});
|
|
return options.useSingleArtifactDirectory ? 'Some generated typings' : 'Some other generated typings';
|
|
},
|
|
},
|
|
}));
|
|
getLanguagePlugin('typescript').outputExtension;
|