@khanacademy/graphql-flow 1.1.2 → 2.0.0
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/.babelrc +1 -1
- package/.eslintrc.js +0 -1
- package/.github/workflows/changeset-release.yml +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/cli/config.js +2 -4
- package/dist/cli/run.js +1 -2
- package/dist/enums.js +8 -9
- package/dist/generateResponseType.js +33 -41
- package/dist/generateTypeFiles.js +13 -35
- package/dist/generateVariablesType.js +15 -31
- package/dist/index.js +11 -17
- package/dist/parser/parse.js +10 -8
- package/dist/parser/resolve.js +11 -8
- package/dist/parser/utils.js +36 -0
- package/dist/schemaFromIntrospectionData.js +1 -2
- package/dist/types.js +1 -2
- package/dist/utils.js +43 -3
- package/package.json +8 -7
- package/{src/cli/schema.json → schema.json} +3 -0
- package/{dist/__test__/generateTypeFileContents.test.js → src/__test__/generateTypeFileContents.test.ts} +38 -41
- package/{dist/__test__/graphql-flow.test.js → src/__test__/graphql-flow.test.ts} +232 -235
- package/src/__test__/{processPragmas.test.js → processPragmas.test.ts} +0 -1
- package/{dist/cli/__test__/config.test.js → src/cli/__test__/config.test.ts} +5 -6
- package/{dist/cli/config.js.flow → src/cli/config.ts} +6 -11
- package/src/cli/{run.js → run.ts} +5 -4
- package/src/{enums.js → enums.ts} +20 -22
- package/{dist/generateResponseType.js.flow → src/generateResponseType.ts} +167 -182
- package/src/{generateTypeFiles.js → generateTypeFiles.ts} +24 -40
- package/src/{generateVariablesType.js → generateVariablesType.ts} +34 -44
- package/{dist/index.js.flow → src/index.ts} +33 -24
- package/{dist/parser/__test__/parse.test.js → src/parser/__test__/parse.test.ts} +12 -11
- package/{dist/parser/parse.js.flow → src/parser/parse.ts} +69 -48
- package/{dist/parser/resolve.js.flow → src/parser/resolve.ts} +25 -19
- package/src/parser/utils.ts +24 -0
- package/{dist/schemaFromIntrospectionData.js.flow → src/schemaFromIntrospectionData.ts} +1 -4
- package/src/types.ts +97 -0
- package/src/utils.ts +73 -0
- package/tools/{find-files-with-gql.js → find-files-with-gql.ts} +2 -3
- package/tsconfig.json +110 -0
- package/types/flow-to-ts.d.ts +1 -0
- package/dist/__test__/example-schema.graphql +0 -67
- package/dist/__test__/processPragmas.test.js +0 -76
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/run.js.flow +0 -236
- package/dist/cli/run.js.map +0 -1
- package/dist/cli/schema.json +0 -94
- package/dist/enums.js.flow +0 -98
- package/dist/enums.js.map +0 -1
- package/dist/generateResponseType.js.map +0 -1
- package/dist/generateTypeFiles.js.flow +0 -197
- package/dist/generateTypeFiles.js.map +0 -1
- package/dist/generateVariablesType.js.flow +0 -156
- package/dist/generateVariablesType.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/parser/parse.js.map +0 -1
- package/dist/parser/resolve.js.map +0 -1
- package/dist/schemaFromIntrospectionData.js.map +0 -1
- package/dist/types.js.flow +0 -87
- package/dist/types.js.map +0 -1
- package/dist/utils.js.flow +0 -50
- package/dist/utils.js.map +0 -1
- package/flow-typed/npm/@babel/types_vx.x.x.js +0 -5331
- package/flow-typed/npm/jest_v23.x.x.js +0 -1155
- package/flow-typed/overrides.js +0 -435
- package/src/__test__/generateTypeFileContents.test.js +0 -157
- package/src/__test__/graphql-flow.test.js +0 -639
- package/src/cli/__test__/config.test.js +0 -120
- package/src/cli/config.js +0 -84
- package/src/generateResponseType.js +0 -583
- package/src/index.js +0 -159
- package/src/parser/__test__/parse.test.js +0 -249
- package/src/parser/parse.js +0 -414
- package/src/parser/resolve.js +0 -117
- package/src/schemaFromIntrospectionData.js +0 -68
- package/src/types.js +0 -87
- package/src/utils.js +0 -50
package/dist/types.js.flow
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import type {BabelNode} from '@babel/types';
|
|
4
|
-
import type {
|
|
5
|
-
FragmentDefinitionNode,
|
|
6
|
-
IntrospectionEnumType,
|
|
7
|
-
IntrospectionField,
|
|
8
|
-
IntrospectionInputObjectType,
|
|
9
|
-
IntrospectionInterfaceType,
|
|
10
|
-
IntrospectionObjectType,
|
|
11
|
-
IntrospectionUnionType,
|
|
12
|
-
SelectionNode,
|
|
13
|
-
} from 'graphql';
|
|
14
|
-
|
|
15
|
-
export type Selections = $ReadOnlyArray<SelectionNode>;
|
|
16
|
-
|
|
17
|
-
export type GenerateConfig = {|
|
|
18
|
-
schemaFilePath: string,
|
|
19
|
-
match?: Array<RegExp | string>,
|
|
20
|
-
exclude?: Array<RegExp | string>,
|
|
21
|
-
|
|
22
|
-
typeScript?: boolean,
|
|
23
|
-
scalars?: Scalars,
|
|
24
|
-
strictNullability?: boolean,
|
|
25
|
-
/**
|
|
26
|
-
* The command that users should run to regenerate the types files.
|
|
27
|
-
*/
|
|
28
|
-
regenerateCommand?: string,
|
|
29
|
-
readOnlyArray?: boolean,
|
|
30
|
-
splitTypes?: boolean,
|
|
31
|
-
generatedDirectory?: string,
|
|
32
|
-
exportAllObjectTypes?: boolean,
|
|
33
|
-
typeFileName?: string,
|
|
34
|
-
experimentalEnums?: boolean,
|
|
35
|
-
|};
|
|
36
|
-
|
|
37
|
-
export type CrawlConfig = {
|
|
38
|
-
root: string,
|
|
39
|
-
pragma?: string,
|
|
40
|
-
loosePragma?: string,
|
|
41
|
-
ignorePragma?: string,
|
|
42
|
-
dumpOperations?: string,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export type Config = {
|
|
46
|
-
crawl: CrawlConfig,
|
|
47
|
-
generate: GenerateConfig | Array<GenerateConfig>,
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export type Schema = {
|
|
51
|
-
interfacesByName: {
|
|
52
|
-
[key: string]: IntrospectionInterfaceType & {
|
|
53
|
-
fieldsByName: {[key: string]: IntrospectionField},
|
|
54
|
-
possibleTypesByName: {[key: string]: boolean},
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
inputObjectsByName: {
|
|
58
|
-
[key: string]: IntrospectionInputObjectType,
|
|
59
|
-
},
|
|
60
|
-
typesByName: {
|
|
61
|
-
[key: string]: IntrospectionObjectType & {
|
|
62
|
-
fieldsByName: {[key: string]: IntrospectionField},
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
unionsByName: {
|
|
66
|
-
[key: string]: IntrospectionUnionType,
|
|
67
|
-
},
|
|
68
|
-
enumsByName: {
|
|
69
|
-
[key: string]: IntrospectionEnumType,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
export type Context = {
|
|
74
|
-
path: Array<string>,
|
|
75
|
-
strictNullability: boolean,
|
|
76
|
-
readOnlyArray: boolean,
|
|
77
|
-
fragments: {[key: string]: FragmentDefinitionNode},
|
|
78
|
-
|
|
79
|
-
schema: Schema,
|
|
80
|
-
scalars: Scalars,
|
|
81
|
-
errors: Array<string>,
|
|
82
|
-
allObjectTypes: null | {[key: string]: BabelNode},
|
|
83
|
-
typeScript: boolean,
|
|
84
|
-
|
|
85
|
-
experimentalEnumsMap?: {[key: string]: BabelNode}, // index signature that is populated with declarations
|
|
86
|
-
};
|
|
87
|
-
export type Scalars = {[key: string]: 'string' | 'number' | 'boolean'};
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|
package/dist/utils.js.flow
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import * as babelTypes from '@babel/types';
|
|
4
|
-
import {BabelNodeObjectTypeProperty} from '@babel/types';
|
|
5
|
-
|
|
6
|
-
export const liftLeadingPropertyComments = (
|
|
7
|
-
property: BabelNodeObjectTypeProperty,
|
|
8
|
-
): BabelNodeObjectTypeProperty => {
|
|
9
|
-
return transferLeadingComments(property.value, property);
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const maybeAddDescriptionComment = <T: babelTypes.BabelNode>(
|
|
13
|
-
description: ?string,
|
|
14
|
-
node: T,
|
|
15
|
-
): T => {
|
|
16
|
-
if (description) {
|
|
17
|
-
addCommentAsLineComments(description, node);
|
|
18
|
-
}
|
|
19
|
-
return node;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export function addCommentAsLineComments(
|
|
23
|
-
description: string,
|
|
24
|
-
res: babelTypes.BabelNode,
|
|
25
|
-
) {
|
|
26
|
-
if (res.leadingComments?.length) {
|
|
27
|
-
res.leadingComments[0].value += '\n\n---\n\n' + description;
|
|
28
|
-
} else {
|
|
29
|
-
babelTypes.addComment(
|
|
30
|
-
res,
|
|
31
|
-
'leading',
|
|
32
|
-
'* ' + description,
|
|
33
|
-
false, // this specifies that it's a block comment, not a line comment
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export const transferLeadingComments = <T: babelTypes.BabelNode>(
|
|
39
|
-
source: babelTypes.BabelNode,
|
|
40
|
-
dest: T,
|
|
41
|
-
): T => {
|
|
42
|
-
if (source.leadingComments?.length) {
|
|
43
|
-
dest.leadingComments = [
|
|
44
|
-
...(dest.leadingComments || []),
|
|
45
|
-
...source.leadingComments,
|
|
46
|
-
];
|
|
47
|
-
source.leadingComments = [];
|
|
48
|
-
}
|
|
49
|
-
return dest;
|
|
50
|
-
};
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.js"],"names":["liftLeadingPropertyComments","property","transferLeadingComments","value","maybeAddDescriptionComment","description","node","addCommentAsLineComments","res","leadingComments","length","babelTypes","addComment","source","dest"],"mappings":";;;;;;;;AAEA;;;;;;AAGO,MAAMA,2BAA2B,GACpCC,QADuC,IAET;AAC9B,SAAOC,uBAAuB,CAACD,QAAQ,CAACE,KAAV,EAAiBF,QAAjB,CAA9B;AACH,CAJM;;;;AAMA,MAAMG,0BAA0B,GAAG,CACtCC,WADsC,EAEtCC,IAFsC,KAGlC;AACJ,MAAID,WAAJ,EAAiB;AACbE,IAAAA,wBAAwB,CAACF,WAAD,EAAcC,IAAd,CAAxB;AACH;;AACD,SAAOA,IAAP;AACH,CARM;;;;AAUA,SAASC,wBAAT,CACHF,WADG,EAEHG,GAFG,EAGL;AAAA;;AACE,8BAAIA,GAAG,CAACC,eAAR,iDAAI,qBAAqBC,MAAzB,EAAiC;AAC7BF,IAAAA,GAAG,CAACC,eAAJ,CAAoB,CAApB,EAAuBN,KAAvB,IAAgC,gBAAgBE,WAAhD;AACH,GAFD,MAEO;AACHM,IAAAA,UAAU,CAACC,UAAX,CACIJ,GADJ,EAEI,SAFJ,EAGI,OAAOH,WAHX,EAII,KAJJ,CAIW;AAJX;AAMH;AACJ;;AAEM,MAAMH,uBAAuB,GAAG,CACnCW,MADmC,EAEnCC,IAFmC,KAG/B;AAAA;;AACJ,+BAAID,MAAM,CAACJ,eAAX,kDAAI,sBAAwBC,MAA5B,EAAoC;AAChCI,IAAAA,IAAI,CAACL,eAAL,GAAuB,CACnB,IAAIK,IAAI,CAACL,eAAL,IAAwB,EAA5B,CADmB,EAEnB,GAAGI,MAAM,CAACJ,eAFS,CAAvB;AAIAI,IAAAA,MAAM,CAACJ,eAAP,GAAyB,EAAzB;AACH;;AACD,SAAOK,IAAP;AACH,CAZM","sourcesContent":["// @flow\n\nimport * as babelTypes from '@babel/types';\nimport {BabelNodeObjectTypeProperty} from '@babel/types';\n\nexport const liftLeadingPropertyComments = (\n property: BabelNodeObjectTypeProperty,\n): BabelNodeObjectTypeProperty => {\n return transferLeadingComments(property.value, property);\n};\n\nexport const maybeAddDescriptionComment = <T: babelTypes.BabelNode>(\n description: ?string,\n node: T,\n): T => {\n if (description) {\n addCommentAsLineComments(description, node);\n }\n return node;\n};\n\nexport function addCommentAsLineComments(\n description: string,\n res: babelTypes.BabelNode,\n) {\n if (res.leadingComments?.length) {\n res.leadingComments[0].value += '\\n\\n---\\n\\n' + description;\n } else {\n babelTypes.addComment(\n res,\n 'leading',\n '* ' + description,\n false, // this specifies that it's a block comment, not a line comment\n );\n }\n}\n\nexport const transferLeadingComments = <T: babelTypes.BabelNode>(\n source: babelTypes.BabelNode,\n dest: T,\n): T => {\n if (source.leadingComments?.length) {\n dest.leadingComments = [\n ...(dest.leadingComments || []),\n ...source.leadingComments,\n ];\n source.leadingComments = [];\n }\n return dest;\n};\n"],"file":"utils.js"}
|