forked from jcoreio/apollo-magic-refetch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
getPotentialAncestors.js
62 lines (54 loc) · 1.51 KB
/
getPotentialAncestors.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getPotentialAncestors;
var cache = new Map();
function getPotentialAncestors(type) {
var added = new Set();
var cached = cache.get(type);
if (cached) return cached;
var ancestors = new Map();
function addType(type) {
if (added.has(type)) return;
added.add(type);
var parents = type.parents;
if (parents) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = parents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var field = _step.value;
var name = field.name,
parent = field.parent;
var ancestor = ancestors.get(parent);
if (!ancestor) {
ancestor = {
fields: new Set()
};
ancestors.set(parent, ancestor);
}
ancestor.fields.add(name);
addType(parent);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}
addType(type);
cache.set(type, ancestors);
return ancestors;
}