@newmo/graphql-fake-core 0.7.0 → 0.9.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/dist/esm/extend-schema.d.ts +1 -1
- package/dist/esm/extend-schema.d.ts.map +1 -1
- package/dist/esm/extend-schema.js +63 -1
- package/dist/esm/extend-schema.js.map +1 -1
- package/dist/esm/schema-scanner.d.ts.map +1 -1
- package/dist/esm/schema-scanner.js +109 -10
- package/dist/esm/schema-scanner.js.map +1 -1
- package/package.json +2 -2
- package/src/extend-schema.ts +63 -1
- package/src/schema-scanner.ts +123 -10
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const EXAMPLE_DIRECTIVE = "\n\"\"\"\n@exampleID directive specifies an example value for a ID field.\nThis example value is used in the fake data.\nID value will be unique between all ID fake data.\n\"\"\"\ndirective @exampleID(\n \"\"\"\n The value of the ID field.\n @exampleID(value: \"id\")\n \"\"\"\n value: ID!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleString directive specifies an example value for a String field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleString(\n \"\"\"\n The value of the String field.\n @exampleString(value: \"example\")\n \"\"\"\n value: String!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleInt directive specifies an example value for a
|
|
1
|
+
export declare const EXAMPLE_DIRECTIVE = "\n\"\"\"\n@exampleID directive specifies an example value for a ID field.\nThis example value is used in the fake data.\nID value will be unique between all ID fake data.\n\"\"\"\ndirective @exampleID(\n \"\"\"\n The value of the ID field.\n @exampleID(value: \"id\")\n \"\"\"\n value: ID!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleString directive specifies an example value for a String field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleString(\n \"\"\"\n The value of the String field.\n @exampleString(value: \"example\")\n \"\"\"\n value: String!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleInt directive specifies an example value for a Int field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleInt(\n \"\"\"\n The value of the Int field.\n @exampleInt(value: 1)\n \"\"\"\n value: Int!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleFloat directive specifies an example value for a Float field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleFloat(\n \"\"\"\n The value of the Float field.\n @exampleFloat(value: 1.0)\n \"\"\"\n value: Float!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleBoolean directive specifies an example value for a Boolean field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleBoolean(\n \"\"\"\n The value of the Boolean field.\n @exampleBoolean(value: true)\n \"\"\"\n value: Boolean!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\n\"\"\"\n@exampleArrayID directive specifies an example value for a array of ID field.\nThis example value is used in the fake data.\nID value will be unique between all ID fake data.\n\"\"\"\ndirective @exampleArrayID(\n \"\"\"\n The value of the ID field.\n @exampleArrayID(value: [\"id1\", \"id2\"])\n \"\"\"\n values: [ID!]!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleArrayString directive specifies an example value for a array of String field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleArrayString(\n \"\"\"\n The value of the String field.\n @exampleArrayString(value: [\"example1\", \"example2\"])\n \"\"\"\n values: [String!]!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleArrayInt directive specifies an example value for a array of Int field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleArrayInt(\n \"\"\"\n The value of the Int field.\n @exampleArrayInt(value: [1, 2])\n \"\"\"\n values: [Int!]!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleArrayFloat directive specifies an example value for a array of Float field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleArrayFloat(\n \"\"\"\n The value of the Float field.\n @exampleArrayFloat(value: [1.0, 2.0])\n \"\"\"\n values: [Float!]!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@exampleArrayBoolean directive specifies an example value for a array of Boolean field.\nThis example value is used in the fake data.\n\"\"\"\ndirective @exampleArrayBoolean(\n \"\"\"\n The value of the Boolean field.\n @exampleArrayBoolean(value: [true, false])\n \"\"\"\n values: [Boolean!]!\n) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION\n\"\"\"\n@error directive specifies a field as an error response field.\nIt allows setting an error response and specifying the field name.\n\"\"\"\ndirective @error on FIELD_DEFINITION\n";
|
|
2
2
|
export declare const extendSchema: (schema: string) => string;
|
|
3
3
|
//# sourceMappingURL=extend-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-schema.d.ts","sourceRoot":"","sources":["../../src/extend-schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"extend-schema.d.ts","sourceRoot":"","sources":["../../src/extend-schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,uxHAuH7B,CAAC;AACF,eAAO,MAAM,YAAY,WAAY,MAAM,WAE1C,CAAC"}
|
|
@@ -23,7 +23,7 @@ directive @exampleString(
|
|
|
23
23
|
value: String!
|
|
24
24
|
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
25
25
|
"""
|
|
26
|
-
@exampleInt directive specifies an example value for a
|
|
26
|
+
@exampleInt directive specifies an example value for a Int field.
|
|
27
27
|
This example value is used in the fake data.
|
|
28
28
|
"""
|
|
29
29
|
directive @exampleInt(
|
|
@@ -55,6 +55,68 @@ directive @exampleBoolean(
|
|
|
55
55
|
"""
|
|
56
56
|
value: Boolean!
|
|
57
57
|
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
@exampleArrayID directive specifies an example value for a array of ID field.
|
|
61
|
+
This example value is used in the fake data.
|
|
62
|
+
ID value will be unique between all ID fake data.
|
|
63
|
+
"""
|
|
64
|
+
directive @exampleArrayID(
|
|
65
|
+
"""
|
|
66
|
+
The value of the ID field.
|
|
67
|
+
@exampleArrayID(value: ["id1", "id2"])
|
|
68
|
+
"""
|
|
69
|
+
values: [ID!]!
|
|
70
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
71
|
+
"""
|
|
72
|
+
@exampleArrayString directive specifies an example value for a array of String field.
|
|
73
|
+
This example value is used in the fake data.
|
|
74
|
+
"""
|
|
75
|
+
directive @exampleArrayString(
|
|
76
|
+
"""
|
|
77
|
+
The value of the String field.
|
|
78
|
+
@exampleArrayString(value: ["example1", "example2"])
|
|
79
|
+
"""
|
|
80
|
+
values: [String!]!
|
|
81
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
82
|
+
"""
|
|
83
|
+
@exampleArrayInt directive specifies an example value for a array of Int field.
|
|
84
|
+
This example value is used in the fake data.
|
|
85
|
+
"""
|
|
86
|
+
directive @exampleArrayInt(
|
|
87
|
+
"""
|
|
88
|
+
The value of the Int field.
|
|
89
|
+
@exampleArrayInt(value: [1, 2])
|
|
90
|
+
"""
|
|
91
|
+
values: [Int!]!
|
|
92
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
93
|
+
"""
|
|
94
|
+
@exampleArrayFloat directive specifies an example value for a array of Float field.
|
|
95
|
+
This example value is used in the fake data.
|
|
96
|
+
"""
|
|
97
|
+
directive @exampleArrayFloat(
|
|
98
|
+
"""
|
|
99
|
+
The value of the Float field.
|
|
100
|
+
@exampleArrayFloat(value: [1.0, 2.0])
|
|
101
|
+
"""
|
|
102
|
+
values: [Float!]!
|
|
103
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
104
|
+
"""
|
|
105
|
+
@exampleArrayBoolean directive specifies an example value for a array of Boolean field.
|
|
106
|
+
This example value is used in the fake data.
|
|
107
|
+
"""
|
|
108
|
+
directive @exampleArrayBoolean(
|
|
109
|
+
"""
|
|
110
|
+
The value of the Boolean field.
|
|
111
|
+
@exampleArrayBoolean(value: [true, false])
|
|
112
|
+
"""
|
|
113
|
+
values: [Boolean!]!
|
|
114
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
115
|
+
"""
|
|
116
|
+
@error directive specifies a field as an error response field.
|
|
117
|
+
It allows setting an error response and specifying the field name.
|
|
118
|
+
"""
|
|
119
|
+
directive @error on FIELD_DEFINITION
|
|
58
120
|
`;
|
|
59
121
|
export const extendSchema = (schema) => {
|
|
60
122
|
return EXAMPLE_DIRECTIVE + schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-schema.js","sourceRoot":"","sources":["../../src/extend-schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"extend-schema.js","sourceRoot":"","sources":["../../src/extend-schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHhC,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE;IAC3C,OAAO,iBAAiB,GAAG,MAAM,CAAC;AACtC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-scanner.d.ts","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAKH,KAAK,aAAa,EAWrB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgD1C,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACvD,KAAK,UAAU,GAAG,cAAc,EAAE,CAAC;AACnC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;AAC/D,MAAM,MAAM,qBAAqB,GAAG;IAEhC,KAAK,EAAE,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-scanner.d.ts","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAKH,KAAK,aAAa,EAWrB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgD1C,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACvD,KAAK,UAAU,GAAG,cAAc,EAAE,CAAC;AACnC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;AAC/D,MAAM,MAAM,qBAAqB,GAAG;IAEhC,KAAK,EAAE,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,0BAA0B,CAAC;AAqalF,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,iBAAiB,GAAG,YAAY,GAAG,aAAa,CAAC;AACzF,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAqI5C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,QAAQ,EAAE,CAI9E"}
|
|
@@ -183,6 +183,12 @@ const SUPPORTED_EXAMPLE_DIRECTIVES = [
|
|
|
183
183
|
"exampleInt",
|
|
184
184
|
"exampleFloat",
|
|
185
185
|
"exampleBoolean",
|
|
186
|
+
// array
|
|
187
|
+
"exampleArrayID",
|
|
188
|
+
"exampleArrayString",
|
|
189
|
+
"exampleArrayInt",
|
|
190
|
+
"exampleArrayFloat",
|
|
191
|
+
"exampleArrayBoolean",
|
|
186
192
|
];
|
|
187
193
|
const isIdType = (node) => {
|
|
188
194
|
if (node.kind === "NonNullType") {
|
|
@@ -199,6 +205,14 @@ const isIdType = (node) => {
|
|
|
199
205
|
function parseFieldOrInputValueDefinition({ node, convertedTypeName, config, idFactory, enumMap, }) {
|
|
200
206
|
const fieldName = node.name.value;
|
|
201
207
|
const comment = node.description ? transformComment(node.description) : undefined;
|
|
208
|
+
const errorDirective = node.directives?.find((d) => {
|
|
209
|
+
return d.name.value === "error"; // @error
|
|
210
|
+
});
|
|
211
|
+
if (errorDirective) {
|
|
212
|
+
return {
|
|
213
|
+
example: { value: [] }, // always empty value
|
|
214
|
+
};
|
|
215
|
+
}
|
|
202
216
|
const exampleDirective = node.directives?.find((d) => {
|
|
203
217
|
return SUPPORTED_EXAMPLE_DIRECTIVES.includes(d.name.value);
|
|
204
218
|
});
|
|
@@ -219,6 +233,85 @@ function parseFieldOrInputValueDefinition({ node, convertedTypeName, config, idF
|
|
|
219
233
|
if (!exampleDirective.arguments) {
|
|
220
234
|
throw new Error(`@${exampleDirective.name.value} directive must have arguments. @${exampleDirective.name.value}(value: ...)`);
|
|
221
235
|
}
|
|
236
|
+
// [String!]! -> true
|
|
237
|
+
// [String!] -> true
|
|
238
|
+
// String -> false
|
|
239
|
+
const isListTypeNode = (node) => {
|
|
240
|
+
if (node.kind === "ListType") {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
if (node.kind === "NonNullType") {
|
|
244
|
+
return isListTypeNode(node.type);
|
|
245
|
+
}
|
|
246
|
+
return false;
|
|
247
|
+
};
|
|
248
|
+
if (isListTypeNode(node.type)) {
|
|
249
|
+
/**
|
|
250
|
+
* @exampleArrayID(values: ["id1", "id2"])
|
|
251
|
+
* -> { values: ["id1", "id2"] }
|
|
252
|
+
* @exampleArrayString(values: ["value 1", "value 2"])
|
|
253
|
+
* -> { values: ["value 1", "value 2"] }
|
|
254
|
+
* @exampleArrayInt(values: [1, 2])
|
|
255
|
+
* -> { values: [1, 2] }
|
|
256
|
+
* @exampleArrayFloat(values: [1.1, 2.2])
|
|
257
|
+
* -> { values: [1.1, 2.2] }
|
|
258
|
+
* @exampleArrayBoolean(values: [true, false])
|
|
259
|
+
* -> { values: [true, false] }
|
|
260
|
+
*/
|
|
261
|
+
const exampleDirectiveValues = exampleDirective.arguments.find((a) => a.name.value === "values");
|
|
262
|
+
if (!exampleDirectiveValues) {
|
|
263
|
+
throw new Error(`@${exampleDirective.name.value} directive must have values argument. @${exampleDirective.name.value}(values: ...)`);
|
|
264
|
+
}
|
|
265
|
+
if (exampleDirectiveValues.value.kind !== "ListValue") {
|
|
266
|
+
throw new Error(`@${exampleDirective.name.value} directive must have values argument. @${exampleDirective.name.value}(values: ...). values is not array.`);
|
|
267
|
+
}
|
|
268
|
+
// [String!]! -> String
|
|
269
|
+
// [String!] -> String
|
|
270
|
+
const unwrapListNodeType = (node) => {
|
|
271
|
+
if (node.kind === "ListType") {
|
|
272
|
+
return unwrapListNodeType(node.type);
|
|
273
|
+
}
|
|
274
|
+
if (node.kind === "NonNullType") {
|
|
275
|
+
return unwrapListNodeType(node.type);
|
|
276
|
+
}
|
|
277
|
+
return node;
|
|
278
|
+
};
|
|
279
|
+
const itemOfArrayNodeType = unwrapListNodeType(node.type);
|
|
280
|
+
const itemOfArrayRawValueType = parseTypeNodeStructure(itemOfArrayNodeType);
|
|
281
|
+
const exampleDirectiveRawValues = exampleDirectiveValues.value.values.map((v) => {
|
|
282
|
+
return valueOfNode(v);
|
|
283
|
+
}); // TODO: need to fix type
|
|
284
|
+
// all raw values should be the same type
|
|
285
|
+
const exampleDirectiveRawValueTypeSet = new Set([
|
|
286
|
+
...exampleDirectiveRawValues.map((value) => {
|
|
287
|
+
// array, object, string, number, boolean, null
|
|
288
|
+
return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
|
|
289
|
+
}),
|
|
290
|
+
]);
|
|
291
|
+
if (exampleDirectiveRawValueTypeSet.size !== 1) {
|
|
292
|
+
throw new Error(`${convertedTypeName}.${fieldName}: @${exampleDirective.name.value} directive values must be the same type. Got [${exampleDirectiveRawValues.join(", ")}]`);
|
|
293
|
+
}
|
|
294
|
+
// pick one of the raw value type
|
|
295
|
+
const oneOfExampleDirectiveRawValueType = exampleDirectiveRawValueTypeSet
|
|
296
|
+
.values()
|
|
297
|
+
.next().value;
|
|
298
|
+
if (itemOfArrayRawValueType !== oneOfExampleDirectiveRawValueType) {
|
|
299
|
+
throw new Error(`${convertedTypeName}.${fieldName}: @${exampleDirective.name.value} directive values type must be ${itemOfArrayRawValueType}. Got ${oneOfExampleDirectiveRawValueType}`);
|
|
300
|
+
}
|
|
301
|
+
// if ID type, add idFactory() to the value
|
|
302
|
+
// e.g. @exampleArrayID(values: ["id1", "id2"]) -> { expression: [__id("id1"), __id("id2")] }
|
|
303
|
+
const isExampleArrayIdDirective = exampleDirective.name.value === "exampleArrayID";
|
|
304
|
+
if (isExampleArrayIdDirective) {
|
|
305
|
+
const expressions = exampleDirectiveRawValues.flatMap((rawValue) => {
|
|
306
|
+
if (typeof rawValue !== "string") {
|
|
307
|
+
return [];
|
|
308
|
+
}
|
|
309
|
+
return idFactory(rawValue, `${convertedTypeName}.${fieldName}.${rawValue}`);
|
|
310
|
+
});
|
|
311
|
+
return { comment, example: { expression: `[${expressions.join(",")}]` } };
|
|
312
|
+
}
|
|
313
|
+
return { comment, example: { value: exampleDirectiveRawValues } };
|
|
314
|
+
}
|
|
222
315
|
/**
|
|
223
316
|
* @exampleID(value: "id")
|
|
224
317
|
* -> { value: "id1" }
|
|
@@ -231,26 +324,32 @@ function parseFieldOrInputValueDefinition({ node, convertedTypeName, config, idF
|
|
|
231
324
|
* @exampleBoolean(value: true)
|
|
232
325
|
* -> { value: true }
|
|
233
326
|
*/
|
|
234
|
-
const
|
|
235
|
-
if (!
|
|
327
|
+
const exampleDirectiveValue = exampleDirective.arguments.find((a) => a.name.value === "value");
|
|
328
|
+
if (!exampleDirectiveValue) {
|
|
236
329
|
throw new Error(`@${exampleDirective.name.value} directive must have value argument. @${exampleDirective.name.value}(value: ...)`);
|
|
237
330
|
}
|
|
238
|
-
const
|
|
331
|
+
const exampleDirectiveRawValue = valueOfNode(exampleDirectiveValue.value);
|
|
239
332
|
// if node type is not equal to the value type, throw an error
|
|
240
333
|
const nodeType = parseTypeNodeStructure(node.type);
|
|
241
334
|
// array, object, string, number, boolean, null
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
335
|
+
const directiveRawValueType = Object.prototype.toString
|
|
336
|
+
.call(exampleDirectiveRawValue)
|
|
337
|
+
.slice(8, -1)
|
|
338
|
+
.toLowerCase();
|
|
339
|
+
if (nodeType !== directiveRawValueType) {
|
|
340
|
+
throw new Error(`${convertedTypeName}.${fieldName}: @${exampleDirective.name.value} directive value type must be ${nodeType}. Got ${directiveRawValueType}`);
|
|
245
341
|
}
|
|
246
342
|
// if ID type, add idFactory() to the value
|
|
247
343
|
// e.g. @exampleID(value: "id") -> { expression: __id("id") }
|
|
248
344
|
const isExampleIdDirective = exampleDirective.name.value === "exampleID";
|
|
249
|
-
if (isExampleIdDirective && typeof
|
|
250
|
-
const pathOfField = `${convertedTypeName}.${fieldName}.${
|
|
251
|
-
return {
|
|
345
|
+
if (isExampleIdDirective && typeof exampleDirectiveRawValue === "string") {
|
|
346
|
+
const pathOfField = `${convertedTypeName}.${fieldName}.${exampleDirectiveRawValue}`;
|
|
347
|
+
return {
|
|
348
|
+
comment,
|
|
349
|
+
example: { expression: idFactory(exampleDirectiveRawValue, pathOfField) },
|
|
350
|
+
};
|
|
252
351
|
}
|
|
253
|
-
return { comment, example: { value:
|
|
352
|
+
return { comment, example: { value: exampleDirectiveRawValue } };
|
|
254
353
|
}
|
|
255
354
|
function parseObjectTypeOrInputObjectTypeDefinition({ node, config, idFactory, enumMap, }) {
|
|
256
355
|
const originalTypeName = node.name.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-scanner.js","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-scanner.js","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newmo/graphql-fake-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "GraphQL fake core library",
|
|
6
6
|
"keywords": [
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"access": "public",
|
|
66
66
|
"registry": "https://registry.npmjs.org/"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "94e485d0fd79df45ca57fb8cd8f650ac878e4888"
|
|
69
69
|
}
|
package/src/extend-schema.ts
CHANGED
|
@@ -23,7 +23,7 @@ directive @exampleString(
|
|
|
23
23
|
value: String!
|
|
24
24
|
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
25
25
|
"""
|
|
26
|
-
@exampleInt directive specifies an example value for a
|
|
26
|
+
@exampleInt directive specifies an example value for a Int field.
|
|
27
27
|
This example value is used in the fake data.
|
|
28
28
|
"""
|
|
29
29
|
directive @exampleInt(
|
|
@@ -55,6 +55,68 @@ directive @exampleBoolean(
|
|
|
55
55
|
"""
|
|
56
56
|
value: Boolean!
|
|
57
57
|
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
@exampleArrayID directive specifies an example value for a array of ID field.
|
|
61
|
+
This example value is used in the fake data.
|
|
62
|
+
ID value will be unique between all ID fake data.
|
|
63
|
+
"""
|
|
64
|
+
directive @exampleArrayID(
|
|
65
|
+
"""
|
|
66
|
+
The value of the ID field.
|
|
67
|
+
@exampleArrayID(value: ["id1", "id2"])
|
|
68
|
+
"""
|
|
69
|
+
values: [ID!]!
|
|
70
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
71
|
+
"""
|
|
72
|
+
@exampleArrayString directive specifies an example value for a array of String field.
|
|
73
|
+
This example value is used in the fake data.
|
|
74
|
+
"""
|
|
75
|
+
directive @exampleArrayString(
|
|
76
|
+
"""
|
|
77
|
+
The value of the String field.
|
|
78
|
+
@exampleArrayString(value: ["example1", "example2"])
|
|
79
|
+
"""
|
|
80
|
+
values: [String!]!
|
|
81
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
82
|
+
"""
|
|
83
|
+
@exampleArrayInt directive specifies an example value for a array of Int field.
|
|
84
|
+
This example value is used in the fake data.
|
|
85
|
+
"""
|
|
86
|
+
directive @exampleArrayInt(
|
|
87
|
+
"""
|
|
88
|
+
The value of the Int field.
|
|
89
|
+
@exampleArrayInt(value: [1, 2])
|
|
90
|
+
"""
|
|
91
|
+
values: [Int!]!
|
|
92
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
93
|
+
"""
|
|
94
|
+
@exampleArrayFloat directive specifies an example value for a array of Float field.
|
|
95
|
+
This example value is used in the fake data.
|
|
96
|
+
"""
|
|
97
|
+
directive @exampleArrayFloat(
|
|
98
|
+
"""
|
|
99
|
+
The value of the Float field.
|
|
100
|
+
@exampleArrayFloat(value: [1.0, 2.0])
|
|
101
|
+
"""
|
|
102
|
+
values: [Float!]!
|
|
103
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
104
|
+
"""
|
|
105
|
+
@exampleArrayBoolean directive specifies an example value for a array of Boolean field.
|
|
106
|
+
This example value is used in the fake data.
|
|
107
|
+
"""
|
|
108
|
+
directive @exampleArrayBoolean(
|
|
109
|
+
"""
|
|
110
|
+
The value of the Boolean field.
|
|
111
|
+
@exampleArrayBoolean(value: [true, false])
|
|
112
|
+
"""
|
|
113
|
+
values: [Boolean!]!
|
|
114
|
+
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
|
|
115
|
+
"""
|
|
116
|
+
@error directive specifies a field as an error response field.
|
|
117
|
+
It allows setting an error response and specifying the field name.
|
|
118
|
+
"""
|
|
119
|
+
directive @error on FIELD_DEFINITION
|
|
58
120
|
`;
|
|
59
121
|
export const extendSchema = (schema: string) => {
|
|
60
122
|
return EXAMPLE_DIRECTIVE + schema;
|
package/src/schema-scanner.ts
CHANGED
|
@@ -263,6 +263,12 @@ const SUPPORTED_EXAMPLE_DIRECTIVES = [
|
|
|
263
263
|
"exampleInt",
|
|
264
264
|
"exampleFloat",
|
|
265
265
|
"exampleBoolean",
|
|
266
|
+
// array
|
|
267
|
+
"exampleArrayID",
|
|
268
|
+
"exampleArrayString",
|
|
269
|
+
"exampleArrayInt",
|
|
270
|
+
"exampleArrayFloat",
|
|
271
|
+
"exampleArrayBoolean",
|
|
266
272
|
];
|
|
267
273
|
const isIdType = (node: NonNullTypeNode | NamedTypeNode | ListTypeNode): boolean => {
|
|
268
274
|
if (node.kind === "NonNullType") {
|
|
@@ -292,6 +298,14 @@ function parseFieldOrInputValueDefinition({
|
|
|
292
298
|
}): { comment?: string | undefined; example?: ExampleDirective | undefined } {
|
|
293
299
|
const fieldName = node.name.value;
|
|
294
300
|
const comment = node.description ? transformComment(node.description) : undefined;
|
|
301
|
+
const errorDirective = node.directives?.find((d) => {
|
|
302
|
+
return d.name.value === "error"; // @error
|
|
303
|
+
});
|
|
304
|
+
if (errorDirective) {
|
|
305
|
+
return {
|
|
306
|
+
example: { value: [] }, // always empty value
|
|
307
|
+
};
|
|
308
|
+
}
|
|
295
309
|
const exampleDirective = node.directives?.find((d) => {
|
|
296
310
|
return SUPPORTED_EXAMPLE_DIRECTIVES.includes(d.name.value);
|
|
297
311
|
});
|
|
@@ -314,6 +328,99 @@ function parseFieldOrInputValueDefinition({
|
|
|
314
328
|
`@${exampleDirective.name.value} directive must have arguments. @${exampleDirective.name.value}(value: ...)`,
|
|
315
329
|
);
|
|
316
330
|
}
|
|
331
|
+
// [String!]! -> true
|
|
332
|
+
// [String!] -> true
|
|
333
|
+
// String -> false
|
|
334
|
+
const isListTypeNode = (node: TypeNode): node is ListTypeNode | NonNullTypeNode => {
|
|
335
|
+
if (node.kind === "ListType") {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
if (node.kind === "NonNullType") {
|
|
339
|
+
return isListTypeNode(node.type);
|
|
340
|
+
}
|
|
341
|
+
return false;
|
|
342
|
+
};
|
|
343
|
+
if (isListTypeNode(node.type)) {
|
|
344
|
+
/**
|
|
345
|
+
* @exampleArrayID(values: ["id1", "id2"])
|
|
346
|
+
* -> { values: ["id1", "id2"] }
|
|
347
|
+
* @exampleArrayString(values: ["value 1", "value 2"])
|
|
348
|
+
* -> { values: ["value 1", "value 2"] }
|
|
349
|
+
* @exampleArrayInt(values: [1, 2])
|
|
350
|
+
* -> { values: [1, 2] }
|
|
351
|
+
* @exampleArrayFloat(values: [1.1, 2.2])
|
|
352
|
+
* -> { values: [1.1, 2.2] }
|
|
353
|
+
* @exampleArrayBoolean(values: [true, false])
|
|
354
|
+
* -> { values: [true, false] }
|
|
355
|
+
*/
|
|
356
|
+
const exampleDirectiveValues = exampleDirective.arguments.find(
|
|
357
|
+
(a) => a.name.value === "values",
|
|
358
|
+
);
|
|
359
|
+
if (!exampleDirectiveValues) {
|
|
360
|
+
throw new Error(
|
|
361
|
+
`@${exampleDirective.name.value} directive must have values argument. @${exampleDirective.name.value}(values: ...)`,
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
if (exampleDirectiveValues.value.kind !== "ListValue") {
|
|
365
|
+
throw new Error(
|
|
366
|
+
`@${exampleDirective.name.value} directive must have values argument. @${exampleDirective.name.value}(values: ...). values is not array.`,
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
// [String!]! -> String
|
|
370
|
+
// [String!] -> String
|
|
371
|
+
const unwrapListNodeType = (node: ListTypeNode | NonNullTypeNode | TypeNode): TypeNode => {
|
|
372
|
+
if (node.kind === "ListType") {
|
|
373
|
+
return unwrapListNodeType(node.type);
|
|
374
|
+
}
|
|
375
|
+
if (node.kind === "NonNullType") {
|
|
376
|
+
return unwrapListNodeType(node.type);
|
|
377
|
+
}
|
|
378
|
+
return node;
|
|
379
|
+
};
|
|
380
|
+
const itemOfArrayNodeType = unwrapListNodeType(node.type);
|
|
381
|
+
const itemOfArrayRawValueType = parseTypeNodeStructure(itemOfArrayNodeType);
|
|
382
|
+
const exampleDirectiveRawValues = exampleDirectiveValues.value.values.map((v) => {
|
|
383
|
+
return valueOfNode(v);
|
|
384
|
+
}) as ValuePrimitive[]; // TODO: need to fix type
|
|
385
|
+
// all raw values should be the same type
|
|
386
|
+
const exampleDirectiveRawValueTypeSet = new Set<string>([
|
|
387
|
+
...exampleDirectiveRawValues.map((value) => {
|
|
388
|
+
// array, object, string, number, boolean, null
|
|
389
|
+
return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
|
|
390
|
+
}),
|
|
391
|
+
]);
|
|
392
|
+
if (exampleDirectiveRawValueTypeSet.size !== 1) {
|
|
393
|
+
throw new Error(
|
|
394
|
+
`${convertedTypeName}.${fieldName}: @${
|
|
395
|
+
exampleDirective.name.value
|
|
396
|
+
} directive values must be the same type. Got [${exampleDirectiveRawValues.join(
|
|
397
|
+
", ",
|
|
398
|
+
)}]`,
|
|
399
|
+
);
|
|
400
|
+
}
|
|
401
|
+
// pick one of the raw value type
|
|
402
|
+
const oneOfExampleDirectiveRawValueType = exampleDirectiveRawValueTypeSet
|
|
403
|
+
.values()
|
|
404
|
+
.next().value;
|
|
405
|
+
if (itemOfArrayRawValueType !== oneOfExampleDirectiveRawValueType) {
|
|
406
|
+
throw new Error(
|
|
407
|
+
`${convertedTypeName}.${fieldName}: @${exampleDirective.name.value} directive values type must be ${itemOfArrayRawValueType}. Got ${oneOfExampleDirectiveRawValueType}`,
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
// if ID type, add idFactory() to the value
|
|
411
|
+
// e.g. @exampleArrayID(values: ["id1", "id2"]) -> { expression: [__id("id1"), __id("id2")] }
|
|
412
|
+
const isExampleArrayIdDirective = exampleDirective.name.value === "exampleArrayID";
|
|
413
|
+
if (isExampleArrayIdDirective) {
|
|
414
|
+
const expressions = exampleDirectiveRawValues.flatMap((rawValue) => {
|
|
415
|
+
if (typeof rawValue !== "string") {
|
|
416
|
+
return [];
|
|
417
|
+
}
|
|
418
|
+
return idFactory(rawValue, `${convertedTypeName}.${fieldName}.${rawValue}`);
|
|
419
|
+
});
|
|
420
|
+
return { comment, example: { expression: `[${expressions.join(",")}]` } };
|
|
421
|
+
}
|
|
422
|
+
return { comment, example: { value: exampleDirectiveRawValues } };
|
|
423
|
+
}
|
|
317
424
|
/**
|
|
318
425
|
* @exampleID(value: "id")
|
|
319
426
|
* -> { value: "id1" }
|
|
@@ -326,30 +433,36 @@ function parseFieldOrInputValueDefinition({
|
|
|
326
433
|
* @exampleBoolean(value: true)
|
|
327
434
|
* -> { value: true }
|
|
328
435
|
*/
|
|
329
|
-
const
|
|
330
|
-
if (!
|
|
436
|
+
const exampleDirectiveValue = exampleDirective.arguments.find((a) => a.name.value === "value");
|
|
437
|
+
if (!exampleDirectiveValue) {
|
|
331
438
|
throw new Error(
|
|
332
439
|
`@${exampleDirective.name.value} directive must have value argument. @${exampleDirective.name.value}(value: ...)`,
|
|
333
440
|
);
|
|
334
441
|
}
|
|
335
|
-
const
|
|
442
|
+
const exampleDirectiveRawValue = valueOfNode(exampleDirectiveValue.value);
|
|
336
443
|
// if node type is not equal to the value type, throw an error
|
|
337
444
|
const nodeType = parseTypeNodeStructure(node.type);
|
|
338
445
|
// array, object, string, number, boolean, null
|
|
339
|
-
const
|
|
340
|
-
|
|
446
|
+
const directiveRawValueType = Object.prototype.toString
|
|
447
|
+
.call(exampleDirectiveRawValue)
|
|
448
|
+
.slice(8, -1)
|
|
449
|
+
.toLowerCase();
|
|
450
|
+
if (nodeType !== directiveRawValueType) {
|
|
341
451
|
throw new Error(
|
|
342
|
-
`${convertedTypeName}.${fieldName}: @${exampleDirective.name.value} directive value type must be ${nodeType}. Got ${
|
|
452
|
+
`${convertedTypeName}.${fieldName}: @${exampleDirective.name.value} directive value type must be ${nodeType}. Got ${directiveRawValueType}`,
|
|
343
453
|
);
|
|
344
454
|
}
|
|
345
455
|
// if ID type, add idFactory() to the value
|
|
346
456
|
// e.g. @exampleID(value: "id") -> { expression: __id("id") }
|
|
347
457
|
const isExampleIdDirective = exampleDirective.name.value === "exampleID";
|
|
348
|
-
if (isExampleIdDirective && typeof
|
|
349
|
-
const pathOfField = `${convertedTypeName}.${fieldName}.${
|
|
350
|
-
return {
|
|
458
|
+
if (isExampleIdDirective && typeof exampleDirectiveRawValue === "string") {
|
|
459
|
+
const pathOfField = `${convertedTypeName}.${fieldName}.${exampleDirectiveRawValue}`;
|
|
460
|
+
return {
|
|
461
|
+
comment,
|
|
462
|
+
example: { expression: idFactory(exampleDirectiveRawValue, pathOfField) },
|
|
463
|
+
};
|
|
351
464
|
}
|
|
352
|
-
return { comment, example: { value:
|
|
465
|
+
return { comment, example: { value: exampleDirectiveRawValue } };
|
|
353
466
|
}
|
|
354
467
|
|
|
355
468
|
function parseObjectTypeOrInputObjectTypeDefinition({
|