Skip to content

Commit ba09518

Browse files
committed
Support getting schema by url
1 parent 664e391 commit ba09518

File tree

3 files changed

+77
-24
lines changed

3 files changed

+77
-24
lines changed

index.js

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/usr/bin/env node
22
'use strict';
3+
const isUrl = require('is-url');
4+
35
const program = require('commander');
46

57
// file I/O helpers
@@ -11,6 +13,9 @@ const interfaceUtils = require('./util/interface');
1113
// Module Utils
1214
const moduleUtils = require('./util/module');
1315

16+
// Fetch utils
17+
const fetchUtils = require('./util/fetcher');
18+
1419
program
1520
.version('0.3.0')
1621
.usage('[options] <schema.json>')
@@ -38,14 +43,34 @@ program
3843
v => v.split(','),
3944
[]
4045
)
41-
.action((fileName, options) => {
42-
let schema = fileIO.readFile(fileName);
46+
.action((path, options) => {
47+
const getSchema = new Promise((resolve, reject) => {
48+
if (isUrl(path)) {
49+
fetchUtils.fetchWithIntrospection(path, (err, schema) => {
50+
if (err) {
51+
reject(err);
52+
} else if (!schema.data) {
53+
reject(
54+
new Error('Server replied with an invalid introspection schema')
55+
);
56+
} else {
57+
resolve(schema);
58+
}
59+
});
60+
} else {
61+
resolve(fileIO.readFile(path));
62+
}
63+
});
4364

44-
let interfaces = interfaceUtils.generateTypes(schema, options);
65+
getSchema
66+
.then(schema => {
67+
let interfaces = interfaceUtils.generateTypes(schema, options);
4568

46-
let module = moduleUtils.generateModule(options.moduleName, interfaces);
69+
let module = moduleUtils.generateModule(options.moduleName, interfaces);
4770

48-
moduleUtils.writeModuleToFile(options.outputFile, module);
71+
moduleUtils.writeModuleToFile(options.outputFile, module);
72+
})
73+
.catch(err => console.error(err.message));
4974
})
5075
.parse(process.argv);
5176

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
"description": "Convert a GraphQL Schema to a Flowtype definition",
55
"main": "index.js",
66
"dependencies": {
7-
"commander": "^2.9.0"
7+
"commander": "^2.9.0",
8+
"is-url": "^1.2.2",
9+
"node-fetch": "^1.6.3"
810
},
911
"devDependencies": {
1012
"@types/graphql": "^0.7.1",
1113
"@types/node": "^6.0.45",
1214
"chai": "^3.5.0",
13-
"graphql": "^0.7.2",
15+
"graphql": "^0.9.6",
1416
"mocha": "^2.4.5"
1517
},
1618
"scripts": {

yarn.lock

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
22
# yarn lockfile v1
3+
4+
35
"@types/graphql@^0.7.1":
46
version "0.7.1"
57
resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.7.1.tgz#fc42bb02d0b8ba52cc68501f9dcd67e6b89f86fe"
@@ -20,12 +22,6 @@ chai@^3.5.0:
2022
deep-eql "^0.1.3"
2123
type-detect "^1.0.0"
2224

23-
commander@^2.9.0:
24-
version "2.9.0"
25-
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
26-
dependencies:
27-
graceful-readlink ">= 1.0.0"
28-
2925
3026
version "0.6.1"
3127
resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06"
@@ -34,6 +30,12 @@ [email protected]:
3430
version "2.3.0"
3531
resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
3632

33+
commander@^2.9.0:
34+
version "2.9.0"
35+
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
36+
dependencies:
37+
graceful-readlink ">= 1.0.0"
38+
3739
3840
version "2.2.0"
3941
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
@@ -50,6 +52,12 @@ [email protected]:
5052
version "1.4.0"
5153
resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
5254

55+
encoding@^0.1.11:
56+
version "0.1.12"
57+
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
58+
dependencies:
59+
iconv-lite "~0.4.13"
60+
5361
5462
version "1.0.2"
5563
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
@@ -65,23 +73,35 @@ [email protected]:
6573
version "1.0.1"
6674
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
6775

68-
graphql@^0.7.2:
69-
version "0.7.2"
70-
resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.7.2.tgz#cc894a32823399b8a0cb012b9e9ecad35cd00f72"
76+
graphql@^0.9.6:
77+
version "0.9.6"
78+
resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.9.6.tgz#514421e9d225c29dfc8fd305459abae58815ef2c"
7179
dependencies:
72-
iterall "1.0.2"
80+
iterall "^1.0.0"
7381

7482
7583
version "1.9.2"
7684
resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
7785

86+
iconv-lite@~0.4.13:
87+
version "0.4.17"
88+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.17.tgz#4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d"
89+
7890
inherits@2:
7991
version "2.0.3"
8092
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
8193

82-
83-
version "1.0.2"
84-
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.0.2.tgz#41a2e96ce9eda5e61c767ee5dc312373bb046e91"
94+
is-stream@^1.0.1:
95+
version "1.1.0"
96+
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
97+
98+
is-url@^1.2.2:
99+
version "1.2.2"
100+
resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26"
101+
102+
iterall@^1.0.0:
103+
version "1.1.1"
104+
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.1.tgz#f7f0af11e9a04ec6426260f5019d9fcca4d50214"
85105

86106
87107
version "0.26.3"
@@ -134,6 +154,13 @@ [email protected]:
134154
version "0.7.1"
135155
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
136156

157+
node-fetch@^1.6.3:
158+
version "1.6.3"
159+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
160+
dependencies:
161+
encoding "^0.1.11"
162+
is-stream "^1.0.1"
163+
137164
sigmund@~1.0.0:
138165
version "1.0.1"
139166
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
@@ -146,11 +173,10 @@ [email protected]:
146173
version "0.0.2"
147174
resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1"
148175

149-
type-detect@^1.0.0:
150-
version "1.0.0"
151-
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
152-
153176
154177
version "0.1.1"
155178
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
156179

180+
type-detect@^1.0.0:
181+
version "1.0.0"
182+
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"

0 commit comments

Comments
 (0)