UNPKG

2.29 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.ONE_DAY = undefined;
7exports.getFields = getFields;
8exports.prettyPrint = prettyPrint;
9exports.toFilteredArray = toFilteredArray;
10exports.extendIncludes = extendIncludes;
11
12var _util = require('util');
13
14var _util2 = _interopRequireDefault(_util);
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18var ONE_DAY = exports.ONE_DAY = 24 * 60 * 60 * 1000;
19
20function getFields(info) {
21 var fragments = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : info.fragments;
22
23 if (info.kind !== 'Field') {
24 info = info.fieldNodes[0];
25 }
26 var selections = info.selectionSet.selections;
27 var reducer = function reducer(fields, selection) {
28 if (selection.kind === 'FragmentSpread') {
29 var name = selection.name.value;
30 var fragment = fragments[name];
31 if (!fragment) {
32 throw new Error('Fragment \'' + name + '\' was not passed to getFields()');
33 }
34 fragment.selectionSet.selections.reduce(reducer, fields);
35 } else if (selection.kind === 'InlineFragment') {
36 selection.selectionSet.selections.reduce(reducer, fields);
37 } else {
38 fields[selection.name.value] = selection;
39 }
40 return fields;
41 };
42 return selections.reduce(reducer, {});
43}
44
45function prettyPrint(obj) {
46 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
47 _ref$depth = _ref.depth,
48 depth = _ref$depth === undefined ? 5 : _ref$depth,
49 _ref$colors = _ref.colors,
50 colors = _ref$colors === undefined ? true : _ref$colors,
51 _ref$breakLength = _ref.breakLength,
52 breakLength = _ref$breakLength === undefined ? 120 : _ref$breakLength;
53
54 console.log(_util2.default.inspect(obj, { depth: depth, colors: colors, breakLength: breakLength }));
55}
56
57function toFilteredArray(obj) {
58 return (Array.isArray(obj) ? obj : [obj]).filter(function (x) {
59 return x;
60 });
61}
62
63function extendIncludes(includes, moreIncludes) {
64 includes = toFilteredArray(includes);
65 moreIncludes = toFilteredArray(moreIncludes);
66 var seen = {};
67 return includes.concat(moreIncludes).filter(function (x) {
68 if (seen[x]) {
69 return false;
70 }
71 seen[x] = true;
72 return true;
73 });
74}
\No newline at end of file