1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | 'use strict';
|
13 |
|
14 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
15 |
|
16 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
17 |
|
18 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
19 |
|
20 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
21 |
|
22 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
23 |
|
24 | var invariant = require("fbjs/lib/invariant");
|
25 |
|
26 | var _require = require('relay-runtime'),
|
27 | TYPENAME_KEY = _require.TYPENAME_KEY,
|
28 | RelayConcreteNode = _require.RelayConcreteNode,
|
29 | getModuleComponentKey = _require.getModuleComponentKey,
|
30 | getModuleOperationKey = _require.getModuleOperationKey;
|
31 |
|
32 | var CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
33 | CONDITION = RelayConcreteNode.CONDITION,
|
34 | CONNECTION = RelayConcreteNode.CONNECTION,
|
35 | DEFER = RelayConcreteNode.DEFER,
|
36 | INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,
|
37 | LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,
|
38 | LINKED_HANDLE = RelayConcreteNode.LINKED_HANDLE,
|
39 | MODULE_IMPORT = RelayConcreteNode.MODULE_IMPORT,
|
40 | SCALAR_FIELD = RelayConcreteNode.SCALAR_FIELD,
|
41 | SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,
|
42 | STREAM = RelayConcreteNode.STREAM;
|
43 |
|
44 | function createIdGenerator() {
|
45 | var id = 0;
|
46 | return function () {
|
47 | return ++id;
|
48 | };
|
49 | }
|
50 |
|
51 | var DEFAULT_MOCK_RESOLVERS = {
|
52 | ID: function ID(context, generateId) {
|
53 | return "<".concat(context.parentType != null && context.parentType !== DEFAULT_MOCK_TYPENAME ? context.parentType + '-' : '', "mock-id-").concat(generateId(), ">");
|
54 | },
|
55 | Boolean: function Boolean() {
|
56 | return false;
|
57 | },
|
58 | Int: function Int() {
|
59 | return 42;
|
60 | },
|
61 | Float: function Float() {
|
62 | return 4.2;
|
63 | }
|
64 | };
|
65 | var DEFAULT_MOCK_TYPENAME = '__MockObject';
|
66 |
|
67 |
|
68 |
|
69 |
|
70 | function valueResolver(generateId, mockResolvers, typeName, context) {
|
71 | var plural = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
72 | var defaultValue = arguments.length > 5 ? arguments[5] : undefined;
|
73 |
|
74 | var generateValue = function generateValue(possibleDefaultValue) {
|
75 | var mockValue;
|
76 | var mockResolver = typeName != null && mockResolvers != null ? mockResolvers[typeName] : null;
|
77 |
|
78 | if (mockResolver != null) {
|
79 | mockValue = mockResolver(context, generateId);
|
80 | }
|
81 |
|
82 | if (mockValue === undefined) {
|
83 | var _ref, _context$alias;
|
84 |
|
85 | mockValue = possibleDefaultValue !== null && possibleDefaultValue !== void 0 ? possibleDefaultValue : typeName === 'ID' ? DEFAULT_MOCK_RESOLVERS.ID(context, generateId) : "<mock-value-for-field-\"".concat((_ref = (_context$alias = context.alias) !== null && _context$alias !== void 0 ? _context$alias : context.name) !== null && _ref !== void 0 ? _ref : 'undefined', "\">");
|
86 | }
|
87 |
|
88 | return mockValue;
|
89 | };
|
90 |
|
91 | return plural === true ? generateMockList(Array.isArray(defaultValue) ? defaultValue : Array(1).fill(), generateValue) : generateValue(defaultValue);
|
92 | }
|
93 |
|
94 | function createValueResolver(mockResolvers) {
|
95 | var generateId = createIdGenerator();
|
96 | return function () {
|
97 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
98 | args[_key] = arguments[_key];
|
99 | }
|
100 |
|
101 | return valueResolver.apply(void 0, [generateId, mockResolvers].concat(args));
|
102 | };
|
103 | }
|
104 |
|
105 | function generateMockList(placeholderArray, generateListItem) {
|
106 | return placeholderArray.map(function (possibleDefaultValue) {
|
107 | return generateListItem(possibleDefaultValue);
|
108 | });
|
109 | }
|
110 |
|
111 | var RelayMockPayloadGenerator = function () {
|
112 | function RelayMockPayloadGenerator(options) {
|
113 | var _options$mockResolver, _options$selectionMet;
|
114 |
|
115 | this._variables = options.variables;
|
116 | |
117 |
|
118 |
|
119 |
|
120 | this._mockResolvers = _objectSpread({}, DEFAULT_MOCK_RESOLVERS, {}, (_options$mockResolver = options.mockResolvers) !== null && _options$mockResolver !== void 0 ? _options$mockResolver : {});
|
121 | this._selectionMetadata = (_options$selectionMet = options.selectionMetadata) !== null && _options$selectionMet !== void 0 ? _options$selectionMet : {};
|
122 | this._resolveValue = createValueResolver(this._mockResolvers);
|
123 | }
|
124 |
|
125 | var _proto = RelayMockPayloadGenerator.prototype;
|
126 |
|
127 | _proto.generate = function generate(selections, operationType) {
|
128 | var defaultValues = this._getDefaultValuesForObject(operationType, null, null, [],
|
129 | {});
|
130 |
|
131 | return this._traverse({
|
132 | selections: selections,
|
133 | typeName: operationType,
|
134 | isAbstractType: false,
|
135 | name: null,
|
136 | alias: null,
|
137 | args: null
|
138 | }, [],
|
139 | null,
|
140 | defaultValues);
|
141 | };
|
142 |
|
143 | _proto._traverse = function _traverse(traversable, path, prevData, defaultValues) {
|
144 | var selections = traversable.selections,
|
145 | typeName = traversable.typeName,
|
146 | isAbstractType = traversable.isAbstractType;
|
147 | return this._traverseSelections(selections, typeName, isAbstractType, path, prevData, defaultValues);
|
148 | }
|
149 | |
150 |
|
151 |
|
152 | ;
|
153 |
|
154 | _proto._traverseSelections = function _traverseSelections(selections, typeName, isAbstractType, path, prevData, defaultValues) {
|
155 | var _this = this;
|
156 |
|
157 | var mockData = prevData !== null && prevData !== void 0 ? prevData : {};
|
158 | selections.forEach(function (selection) {
|
159 | switch (selection.kind) {
|
160 | case SCALAR_FIELD:
|
161 | {
|
162 | mockData = _this._mockScalar(selection, typeName, path, mockData, defaultValues);
|
163 | break;
|
164 | }
|
165 |
|
166 | case CONNECTION:
|
167 | {
|
168 | mockData = _this._traverseSelections([selection.edges, selection.pageInfo], typeName, isAbstractType, path, prevData, defaultValues);
|
169 | break;
|
170 | }
|
171 |
|
172 | case LINKED_FIELD:
|
173 | {
|
174 | mockData = _this._mockLink(selection, path, mockData, defaultValues);
|
175 | break;
|
176 | }
|
177 |
|
178 | case CONDITION:
|
179 | var conditionValue = _this._getVariableValue(selection.condition);
|
180 |
|
181 | if (conditionValue === selection.passingValue) {
|
182 | mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);
|
183 | }
|
184 |
|
185 | break;
|
186 |
|
187 | case DEFER:
|
188 | case STREAM:
|
189 | {
|
190 | mockData = _this._traverseSelections(selection.selections, typeName, isAbstractType, path, mockData, defaultValues);
|
191 | break;
|
192 | }
|
193 |
|
194 | case INLINE_FRAGMENT:
|
195 | {
|
196 |
|
197 |
|
198 |
|
199 |
|
200 | if (mockData != null && (mockData[TYPENAME_KEY] == null || mockData[TYPENAME_KEY] === DEFAULT_MOCK_TYPENAME)) {
|
201 | var _defaultValues$TYPENA;
|
202 |
|
203 | mockData[TYPENAME_KEY] = (_defaultValues$TYPENA = defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues[TYPENAME_KEY]) !== null && _defaultValues$TYPENA !== void 0 ? _defaultValues$TYPENA : selection.type;
|
204 | }
|
205 |
|
206 |
|
207 |
|
208 | if (isAbstractType === true && mockData != null && mockData[TYPENAME_KEY] === typeName) {
|
209 | mockData[TYPENAME_KEY] = selection.type;
|
210 | }
|
211 |
|
212 | if (mockData != null && mockData[TYPENAME_KEY] === selection.type) {
|
213 |
|
214 | var defaults = _this._getDefaultValuesForObject(selection.type, path[path.length - 1], null, path);
|
215 |
|
216 |
|
217 |
|
218 | var defaultsForAbstractType = typeName !== selection.type ? _this._getDefaultValuesForObject(typeName, path[path.length - 1], null, path) : defaults;
|
219 |
|
220 |
|
221 | var defaultValuesForSelection = defaults;
|
222 |
|
223 |
|
224 | if (defaultValuesForSelection === undefined) {
|
225 |
|
226 | defaultValuesForSelection = defaultsForAbstractType;
|
227 | }
|
228 |
|
229 |
|
230 | if (defaultValuesForSelection === undefined) {
|
231 | defaultValuesForSelection = defaultValues;
|
232 | }
|
233 |
|
234 |
|
235 |
|
236 | if (defaultValuesForSelection === null) {
|
237 | mockData = null;
|
238 | break;
|
239 | }
|
240 |
|
241 | mockData = _this._traverseSelections(selection.selections, selection.type, isAbstractType, path, mockData, defaultValuesForSelection);
|
242 |
|
243 | if (mockData[TYPENAME_KEY] != null) {
|
244 | mockData[TYPENAME_KEY] = selection.type;
|
245 | }
|
246 |
|
247 |
|
248 |
|
249 | if (mockData.id != null && defaults != null && defaults.id != null) {
|
250 | mockData.id = defaults.id;
|
251 | }
|
252 | }
|
253 |
|
254 | break;
|
255 | }
|
256 |
|
257 | case MODULE_IMPORT:
|
258 |
|
259 | if (defaultValues != null) {
|
260 | var _objectSpread2;
|
261 |
|
262 | if (defaultValues.__typename !== typeName) {
|
263 | break;
|
264 | }
|
265 |
|
266 |
|
267 |
|
268 |
|
269 |
|
270 | var operation = defaultValues.__module_operation;
|
271 |
|
272 |
|
273 | !(typeof operation === 'object' && operation !== null && operation.kind === 'SplitOperation' && Array.isArray(operation.selections) && typeof operation.name === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayMockPayloadGenerator(): Unexpected default value for ' + 'a field `__module_operation` in the mock resolver for ' + '@module dependency. Provided value is "%s" and we\'re ' + 'expecting an object of a type `NormalizationSplitOperation`. ' + 'Please adjust mock resolver for the type "%s". ' + 'Typically it should require a file "%s$normalization.graphql".', JSON.stringify(operation), typeName, selection.fragmentName) : invariant(false) : void 0;
|
274 | var splitOperation = operation;
|
275 | var documentName = selection.documentName;
|
276 |
|
277 | if (mockData == null) {
|
278 | mockData = {};
|
279 | }
|
280 | |
281 |
|
282 |
|
283 |
|
284 |
|
285 | mockData = _objectSpread({}, mockData, (_objectSpread2 = {}, (0, _defineProperty2["default"])(_objectSpread2, TYPENAME_KEY, typeName), (0, _defineProperty2["default"])(_objectSpread2, getModuleOperationKey(documentName), operation.name), (0, _defineProperty2["default"])(_objectSpread2, getModuleComponentKey(documentName), defaultValues.__module_component), _objectSpread2), _this._traverseSelections(splitOperation.selections, typeName, false, path, null, null));
|
286 | }
|
287 |
|
288 | break;
|
289 |
|
290 | case CLIENT_EXTENSION:
|
291 |
|
292 |
|
293 | break;
|
294 |
|
295 | case SCALAR_HANDLE:
|
296 | case LINKED_HANDLE:
|
297 | break;
|
298 |
|
299 | default:
|
300 | selection;
|
301 | !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayMockPayloadGenerator(): Unexpected AST kind `%s`.', selection.kind) : invariant(false) : void 0;
|
302 | }
|
303 | });
|
304 | return mockData;
|
305 | }
|
306 | |
307 |
|
308 |
|
309 |
|
310 | ;
|
311 |
|
312 | _proto._getCorrectDefaultEnum = function _getCorrectDefaultEnum(enumValues, value, path, applicationName) {
|
313 | if (value === undefined) {
|
314 | return value;
|
315 | }
|
316 |
|
317 | if (value === null) {
|
318 |
|
319 | return value;
|
320 | }
|
321 |
|
322 | var valueToValidate = Array.isArray(value) ? value.map(function (v) {
|
323 | return String(v).toUpperCase();
|
324 | }) : [String(value).toUpperCase()];
|
325 | var enumValuesNormalized = enumValues.map(function (s) {
|
326 | return s.toUpperCase();
|
327 | });
|
328 |
|
329 |
|
330 | var correctValues = valueToValidate.filter(function (v) {
|
331 | return enumValuesNormalized.includes(v);
|
332 | });
|
333 |
|
334 | if (correctValues.length !== valueToValidate.length) {
|
335 | !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayMockPayloadGenerator: Invalid value "%s" provided for enum ' + 'field "%s" via MockResolver.' + 'Expected one of the following values: %s.', value, "".concat(path.join('.'), ".").concat(applicationName), enumValues.map(function (v) {
|
336 | return "\"".concat(v, "\"");
|
337 | }).join(', ')) : invariant(false) : void 0;
|
338 | }
|
339 |
|
340 |
|
341 |
|
342 | var correctSpellingValues = valueToValidate.map(function (v) {
|
343 | var correctSpellingEnumIndex = enumValuesNormalized.indexOf(String(v).toUpperCase());
|
344 | return enumValues[correctSpellingEnumIndex];
|
345 | });
|
346 | return Array.isArray(value) ? correctSpellingValues : correctSpellingValues[0];
|
347 | }
|
348 | |
349 |
|
350 |
|
351 | ;
|
352 |
|
353 | _proto._mockScalar = function _mockScalar(field, typeName, path, mockData, defaultValues) {
|
354 | var _field$alias;
|
355 |
|
356 | var data = mockData !== null && mockData !== void 0 ? mockData : {};
|
357 | var applicationName = (_field$alias = field.alias) !== null && _field$alias !== void 0 ? _field$alias : field.name;
|
358 |
|
359 | if (data.hasOwnProperty(applicationName) && field.name !== TYPENAME_KEY) {
|
360 | return data;
|
361 | }
|
362 |
|
363 | var value;
|
364 |
|
365 | if (field.name === TYPENAME_KEY) {
|
366 | value = typeName !== null && typeName !== void 0 ? typeName : DEFAULT_MOCK_TYPENAME;
|
367 | }
|
368 |
|
369 | var selectionPath = [].concat((0, _toConsumableArray2["default"])(path), [applicationName]);
|
370 |
|
371 | var _this$_getScalarField = this._getScalarFieldTypeDetails(field, typeName, selectionPath),
|
372 | type = _this$_getScalarField.type,
|
373 | plural = _this$_getScalarField.plural,
|
374 | enumValues = _this$_getScalarField.enumValues;
|
375 |
|
376 |
|
377 |
|
378 | if (defaultValues != null && defaultValues.hasOwnProperty(applicationName)) {
|
379 | value = defaultValues[applicationName];
|
380 |
|
381 | if (enumValues != null) {
|
382 | value = this._getCorrectDefaultEnum(enumValues, value, path, applicationName);
|
383 | }
|
384 |
|
385 |
|
386 | if (value !== undefined && plural && !Array.isArray(value)) {
|
387 | value = [value];
|
388 | }
|
389 | }
|
390 |
|
391 |
|
392 |
|
393 | if (value === undefined) {
|
394 |
|
395 |
|
396 | var _defaultValue = enumValues != null ? enumValues[0] : undefined;
|
397 |
|
398 | value = this._resolveValue(
|
399 |
|
400 | type, {
|
401 | parentType: typeName,
|
402 | name: field.name,
|
403 | alias: field.alias,
|
404 | path: selectionPath,
|
405 | args: this._getFieldArgs(field)
|
406 | }, plural, _defaultValue);
|
407 | }
|
408 |
|
409 | data[applicationName] = value;
|
410 | return data;
|
411 | }
|
412 | |
413 |
|
414 |
|
415 | ;
|
416 |
|
417 | _proto._mockLink = function _mockLink(field, path, prevData, defaultValues) {
|
418 | var _this2 = this;
|
419 |
|
420 | var _field$alias2, _this$_selectionMetad, _field$concreteType;
|
421 |
|
422 | var applicationName = (_field$alias2 = field.alias) !== null && _field$alias2 !== void 0 ? _field$alias2 : field.name;
|
423 | var data = prevData !== null && prevData !== void 0 ? prevData : {};
|
424 |
|
425 | var args = this._getFieldArgs(field);
|
426 |
|
427 |
|
428 |
|
429 |
|
430 | var selectionPath = [].concat((0, _toConsumableArray2["default"])(path), [applicationName]);
|
431 | var typeFromSelection = (_this$_selectionMetad = this._selectionMetadata[selectionPath.join('.')]) !== null && _this$_selectionMetad !== void 0 ? _this$_selectionMetad : {
|
432 | type: DEFAULT_MOCK_TYPENAME
|
433 | };
|
434 | var defaults;
|
435 |
|
436 | if (defaultValues != null && typeof defaultValues[applicationName] === 'object') {
|
437 | defaults = defaultValues[applicationName];
|
438 | }
|
439 |
|
440 |
|
441 |
|
442 | if (defaults === null) {
|
443 | data[applicationName] = null;
|
444 | return data;
|
445 | }
|
446 |
|
447 |
|
448 |
|
449 | var typeName = (_field$concreteType = field.concreteType) !== null && _field$concreteType !== void 0 ? _field$concreteType : defaults != null && typeof defaults[TYPENAME_KEY] === 'string' ? defaults[TYPENAME_KEY] : typeFromSelection.type;
|
450 |
|
451 |
|
452 |
|
453 |
|
454 | var isAbstractType = field.concreteType === null && typeName === typeFromSelection.type;
|
455 |
|
456 | var generateDataForField = function generateDataForField(possibleDefaultValue) {
|
457 | var _this$_getDefaultValu, _field$concreteType2;
|
458 |
|
459 | var fieldDefaultValue = (_this$_getDefaultValu = _this2._getDefaultValuesForObject((_field$concreteType2 = field.concreteType) !== null && _field$concreteType2 !== void 0 ? _field$concreteType2 : typeFromSelection.type, field.name, field.alias, selectionPath, args)) !== null && _this$_getDefaultValu !== void 0 ? _this$_getDefaultValu : possibleDefaultValue;
|
460 |
|
461 | if (fieldDefaultValue === null) {
|
462 | return null;
|
463 | }
|
464 |
|
465 | return _this2._traverse({
|
466 | selections: field.selections,
|
467 | typeName: typeName,
|
468 | isAbstractType: isAbstractType,
|
469 | name: field.name,
|
470 | alias: field.alias,
|
471 | args: args
|
472 | }, [].concat((0, _toConsumableArray2["default"])(path), [applicationName]), typeof data[applicationName] === 'object' ?
|
473 | |
474 |
|
475 |
|
476 | data[applicationName] : null,
|
477 | |
478 |
|
479 |
|
480 | fieldDefaultValue);
|
481 | };
|
482 |
|
483 | data[applicationName] = field.kind === 'LinkedField' && field.plural ? generateMockList(Array.isArray(defaults) ? defaults : Array(1).fill(), generateDataForField) : generateDataForField(defaults);
|
484 | return data;
|
485 | }
|
486 | |
487 |
|
488 |
|
489 | ;
|
490 |
|
491 | _proto._getVariableValue = function _getVariableValue(name) {
|
492 | !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayMockPayloadGenerator(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
493 | return this._variables[name];
|
494 | }
|
495 | |
496 |
|
497 |
|
498 |
|
499 |
|
500 | ;
|
501 |
|
502 | _proto._getDefaultValuesForObject = function _getDefaultValuesForObject(typeName, fieldName, fieldAlias, path, args) {
|
503 | var data;
|
504 |
|
505 | if (typeName != null && this._mockResolvers[typeName] != null) {
|
506 | data = this._resolveValue(typeName, {
|
507 | parentType: null,
|
508 | name: fieldName,
|
509 | alias: fieldAlias,
|
510 | args: args,
|
511 | path: path
|
512 | }, false);
|
513 | }
|
514 |
|
515 | if (typeof data === 'object') {
|
516 | |
517 |
|
518 |
|
519 | return data;
|
520 | }
|
521 | }
|
522 | |
523 |
|
524 |
|
525 | ;
|
526 |
|
527 | _proto._getFieldArgs = function _getFieldArgs(field) {
|
528 | var _this3 = this;
|
529 |
|
530 | var args = {};
|
531 |
|
532 | if (field.args != null) {
|
533 | field.args.forEach(function (arg) {
|
534 | args[arg.name] = _this3._getArgValue(arg);
|
535 | });
|
536 | }
|
537 |
|
538 | return args;
|
539 | };
|
540 |
|
541 | _proto._getArgValue = function _getArgValue(arg) {
|
542 | var _this4 = this;
|
543 |
|
544 | switch (arg.kind) {
|
545 | case 'Literal':
|
546 | return arg.value;
|
547 |
|
548 | case 'Variable':
|
549 | return this._getVariableValue(arg.variableName);
|
550 |
|
551 | case 'ObjectValue':
|
552 | {
|
553 | var value = {};
|
554 | arg.fields.forEach(function (field) {
|
555 | value[field.name] = _this4._getArgValue(field);
|
556 | });
|
557 | return value;
|
558 | }
|
559 |
|
560 | case 'ListValue':
|
561 | {
|
562 | var _value = [];
|
563 | arg.items.forEach(function (item) {
|
564 | _value.push(item != null ? _this4._getArgValue(item) : null);
|
565 | });
|
566 | return _value;
|
567 | }
|
568 | }
|
569 | }
|
570 | |
571 |
|
572 |
|
573 | ;
|
574 |
|
575 | _proto._getScalarFieldTypeDetails = function _getScalarFieldTypeDetails(field, typeName, selectionPath) {
|
576 | var _this$_selectionMetad2;
|
577 |
|
578 | return (_this$_selectionMetad2 = this._selectionMetadata[selectionPath.join('.')]) !== null && _this$_selectionMetad2 !== void 0 ? _this$_selectionMetad2 : {
|
579 | type: field.name === 'id' ? 'ID' : 'String',
|
580 | plural: false,
|
581 | enumValues: null,
|
582 | nullable: false
|
583 | };
|
584 | };
|
585 |
|
586 | return RelayMockPayloadGenerator;
|
587 | }();
|
588 |
|
589 |
|
590 |
|
591 |
|
592 |
|
593 | function generateData(node, variables, mockResolvers, selectionMetadata) {
|
594 | var mockGenerator = new RelayMockPayloadGenerator({
|
595 | variables: variables,
|
596 | mockResolvers: mockResolvers,
|
597 | selectionMetadata: selectionMetadata
|
598 | });
|
599 | var operationType;
|
600 |
|
601 | if (node.name.endsWith('Mutation')) {
|
602 | operationType = 'Mutation';
|
603 | } else if (node.name.endsWith('Subscription')) {
|
604 | operationType = 'Subscription';
|
605 | } else {
|
606 | operationType = 'Query';
|
607 | }
|
608 |
|
609 | return mockGenerator.generate(node.selections, operationType);
|
610 | }
|
611 |
|
612 |
|
613 |
|
614 |
|
615 |
|
616 | function getSelectionMetadataFromOperation(operation) {
|
617 | var _operation$request$no;
|
618 |
|
619 | var selectionTypeInfo = (_operation$request$no = operation.request.node.params.metadata) === null || _operation$request$no === void 0 ? void 0 : _operation$request$no.relayTestingSelectionTypeInfo;
|
620 |
|
621 | if (selectionTypeInfo != null && !Array.isArray(selectionTypeInfo) && typeof selectionTypeInfo === 'object') {
|
622 | var selectionMetadata = {};
|
623 | Object.keys(selectionTypeInfo).forEach(function (path) {
|
624 | var item = selectionTypeInfo[path];
|
625 |
|
626 | if (item != null && !Array.isArray(item) && typeof item === 'object') {
|
627 | if (typeof item.type === 'string' && typeof item.plural === 'boolean' && typeof item.nullable === 'boolean' && (item.enumValues === null || Array.isArray(item.enumValues))) {
|
628 | selectionMetadata[path] = {
|
629 | type: item.type,
|
630 | plural: item.plural,
|
631 | nullable: item.nullable,
|
632 | enumValues: Array.isArray(item.enumValues) ? item.enumValues.map(String) : null
|
633 | };
|
634 | }
|
635 | }
|
636 | });
|
637 | return selectionMetadata;
|
638 | }
|
639 |
|
640 | return null;
|
641 | }
|
642 |
|
643 | function generateDataForOperation(operation, mockResolvers) {
|
644 | var data = generateData(operation.request.node.operation, operation.request.variables, mockResolvers !== null && mockResolvers !== void 0 ? mockResolvers : null, getSelectionMetadataFromOperation(operation));
|
645 | return {
|
646 | data: data
|
647 | };
|
648 | }
|
649 |
|
650 | module.exports = {
|
651 | generate: generateDataForOperation
|
652 | }; |
\ | No newline at end of file |