@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.
Files changed (76) hide show
  1. package/.babelrc +1 -1
  2. package/.eslintrc.js +0 -1
  3. package/.github/workflows/changeset-release.yml +1 -1
  4. package/CHANGELOG.md +16 -0
  5. package/dist/cli/config.js +2 -4
  6. package/dist/cli/run.js +1 -2
  7. package/dist/enums.js +8 -9
  8. package/dist/generateResponseType.js +33 -41
  9. package/dist/generateTypeFiles.js +13 -35
  10. package/dist/generateVariablesType.js +15 -31
  11. package/dist/index.js +11 -17
  12. package/dist/parser/parse.js +10 -8
  13. package/dist/parser/resolve.js +11 -8
  14. package/dist/parser/utils.js +36 -0
  15. package/dist/schemaFromIntrospectionData.js +1 -2
  16. package/dist/types.js +1 -2
  17. package/dist/utils.js +43 -3
  18. package/package.json +8 -7
  19. package/{src/cli/schema.json → schema.json} +3 -0
  20. package/{dist/__test__/generateTypeFileContents.test.js → src/__test__/generateTypeFileContents.test.ts} +38 -41
  21. package/{dist/__test__/graphql-flow.test.js → src/__test__/graphql-flow.test.ts} +232 -235
  22. package/src/__test__/{processPragmas.test.js → processPragmas.test.ts} +0 -1
  23. package/{dist/cli/__test__/config.test.js → src/cli/__test__/config.test.ts} +5 -6
  24. package/{dist/cli/config.js.flow → src/cli/config.ts} +6 -11
  25. package/src/cli/{run.js → run.ts} +5 -4
  26. package/src/{enums.js → enums.ts} +20 -22
  27. package/{dist/generateResponseType.js.flow → src/generateResponseType.ts} +167 -182
  28. package/src/{generateTypeFiles.js → generateTypeFiles.ts} +24 -40
  29. package/src/{generateVariablesType.js → generateVariablesType.ts} +34 -44
  30. package/{dist/index.js.flow → src/index.ts} +33 -24
  31. package/{dist/parser/__test__/parse.test.js → src/parser/__test__/parse.test.ts} +12 -11
  32. package/{dist/parser/parse.js.flow → src/parser/parse.ts} +69 -48
  33. package/{dist/parser/resolve.js.flow → src/parser/resolve.ts} +25 -19
  34. package/src/parser/utils.ts +24 -0
  35. package/{dist/schemaFromIntrospectionData.js.flow → src/schemaFromIntrospectionData.ts} +1 -4
  36. package/src/types.ts +97 -0
  37. package/src/utils.ts +73 -0
  38. package/tools/{find-files-with-gql.js → find-files-with-gql.ts} +2 -3
  39. package/tsconfig.json +110 -0
  40. package/types/flow-to-ts.d.ts +1 -0
  41. package/dist/__test__/example-schema.graphql +0 -67
  42. package/dist/__test__/processPragmas.test.js +0 -76
  43. package/dist/cli/config.js.map +0 -1
  44. package/dist/cli/run.js.flow +0 -236
  45. package/dist/cli/run.js.map +0 -1
  46. package/dist/cli/schema.json +0 -94
  47. package/dist/enums.js.flow +0 -98
  48. package/dist/enums.js.map +0 -1
  49. package/dist/generateResponseType.js.map +0 -1
  50. package/dist/generateTypeFiles.js.flow +0 -197
  51. package/dist/generateTypeFiles.js.map +0 -1
  52. package/dist/generateVariablesType.js.flow +0 -156
  53. package/dist/generateVariablesType.js.map +0 -1
  54. package/dist/index.js.map +0 -1
  55. package/dist/parser/parse.js.map +0 -1
  56. package/dist/parser/resolve.js.map +0 -1
  57. package/dist/schemaFromIntrospectionData.js.map +0 -1
  58. package/dist/types.js.flow +0 -87
  59. package/dist/types.js.map +0 -1
  60. package/dist/utils.js.flow +0 -50
  61. package/dist/utils.js.map +0 -1
  62. package/flow-typed/npm/@babel/types_vx.x.x.js +0 -5331
  63. package/flow-typed/npm/jest_v23.x.x.js +0 -1155
  64. package/flow-typed/overrides.js +0 -435
  65. package/src/__test__/generateTypeFileContents.test.js +0 -157
  66. package/src/__test__/graphql-flow.test.js +0 -639
  67. package/src/cli/__test__/config.test.js +0 -120
  68. package/src/cli/config.js +0 -84
  69. package/src/generateResponseType.js +0 -583
  70. package/src/index.js +0 -159
  71. package/src/parser/__test__/parse.test.js +0 -249
  72. package/src/parser/parse.js +0 -414
  73. package/src/parser/resolve.js +0 -117
  74. package/src/schemaFromIntrospectionData.js +0 -68
  75. package/src/types.js +0 -87
  76. package/src/utils.js +0 -50
@@ -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"}
@@ -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"}