Skip to content

Commit e076502

Browse files
committed
fix: allow Array for type definition in FieldConfig
1 parent 74c3f78 commit e076502

File tree

5 files changed

+18
-6
lines changed

5 files changed

+18
-6
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export default {
2+
type: ['String'],
3+
resolve: () => ['ADMIN', 'USER'],
4+
};

src/__tests__/__snapshots__/requireAstToSchema-test.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ type UserAwesomeType {
5959
firstName: String
6060
lastName: String
6161
extendedData: UserExtendedData
62+
roles: [String]
6263
}
6364
6465
type UserExtendedData {

src/__tests__/__snapshots__/requireSchemaDirectory-test.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ Object {
8787
"children": Object {
8888
"extendedData": Any<Object>,
8989
"index": Any<Object>,
90+
"roles": Any<Object>,
9091
},
9192
"kind": "dir",
9293
"name": "user",

src/__tests__/requireSchemaDirectory-test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ describe('requireSchemaDirectory()', () => {
3535
children: {
3636
extendedData: expect.any(Object),
3737
index: expect.any(Object),
38+
roles: expect.any(Object),
3839
},
3940
},
4041
},

src/requireAstToSchema.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ function prepareFieldConfig(
186186

187187
if (!fc.type || !isSomeOutputTypeDefinition(fc.type)) {
188188
throw new Error(dedent`
189-
Module MUST return FieldConfig with TYPE property in '${ast.absPath}'.
189+
Module MUST return FieldConfig with correct 'type: xxx' property in '${ast.absPath}'.
190190
Eg:
191191
export default {
192192
type: 'String'
@@ -198,9 +198,14 @@ function prepareFieldConfig(
198198
}
199199

200200
function isSomeOutputTypeDefinition(type: any): boolean {
201-
return (
202-
(typeof type === 'string' &&
203-
(isSomeOutputTypeDefinitionString(type) || isTypeNameString(type))) ||
204-
isComposeOutputType(type)
205-
);
201+
if (typeof type === 'string') {
202+
// type: 'String'
203+
return isSomeOutputTypeDefinitionString(type) || isTypeNameString(type);
204+
} else if (Array.isArray(type)) {
205+
// type: ['String']
206+
return isSomeOutputTypeDefinition(type[0]);
207+
} else {
208+
// type: 'type User { name: String }'
209+
return isComposeOutputType(type);
210+
}
206211
}

0 commit comments

Comments
 (0)