@apollo/client 3.7.0-beta.7 → 3.7.0-beta.8
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/apollo-client.cjs +142 -115
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/cache.cjs +160 -37
- package/cache/cache.cjs.map +1 -1
- package/cache/cache.cjs.native.js +160 -37
- package/cache/core/cache.d.ts +1 -1
- package/cache/core/cache.d.ts.map +1 -1
- package/cache/core/cache.js +3 -3
- package/cache/core/cache.js.map +1 -1
- package/cache/index.d.ts +2 -1
- package/cache/index.d.ts.map +1 -1
- package/cache/index.js +1 -0
- package/cache/index.js.map +1 -1
- package/cache/inmemory/fragmentRegistry.d.ts +8 -0
- package/cache/inmemory/fragmentRegistry.d.ts.map +1 -0
- package/cache/inmemory/fragmentRegistry.js +113 -0
- package/cache/inmemory/fragmentRegistry.js.map +1 -0
- package/cache/inmemory/helpers.d.ts +9 -3
- package/cache/inmemory/helpers.d.ts.map +1 -1
- package/cache/inmemory/helpers.js +23 -6
- package/cache/inmemory/helpers.js.map +1 -1
- package/cache/inmemory/inMemoryCache.d.ts +1 -0
- package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
- package/cache/inmemory/inMemoryCache.js +9 -1
- package/cache/inmemory/inMemoryCache.js.map +1 -1
- package/cache/inmemory/readFromStore.d.ts +2 -1
- package/cache/inmemory/readFromStore.d.ts.map +1 -1
- package/cache/inmemory/readFromStore.js +10 -14
- package/cache/inmemory/readFromStore.js.map +1 -1
- package/cache/inmemory/types.d.ts +2 -0
- package/cache/inmemory/types.d.ts.map +1 -1
- package/cache/inmemory/types.js.map +1 -1
- package/cache/inmemory/writeToStore.d.ts +5 -3
- package/cache/inmemory/writeToStore.d.ts.map +1 -1
- package/cache/inmemory/writeToStore.js +12 -19
- package/cache/inmemory/writeToStore.js.map +1 -1
- package/core/ApolloClient.js +2 -2
- package/core/LocalState.js +1 -1
- package/core/ObservableQuery.js +1 -1
- package/core/QueryInfo.d.ts +1 -1
- package/core/QueryInfo.d.ts.map +1 -1
- package/core/QueryInfo.js +2 -2
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts.map +1 -1
- package/core/QueryManager.js +21 -19
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +28 -26
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +28 -26
- package/invariantErrorCodes.js +59 -49
- package/link/batch-http/batch-http.cjs +2 -2
- package/link/batch-http/batch-http.cjs.map +1 -1
- package/link/batch-http/batch-http.cjs.native.js +2 -2
- package/link/batch-http/batchHttpLink.d.ts.map +1 -1
- package/link/batch-http/batchHttpLink.js +2 -2
- package/link/batch-http/batchHttpLink.js.map +1 -1
- package/link/core/ApolloLink.js +1 -1
- package/link/core/core.cjs +1 -1
- package/link/core/core.cjs.map +1 -1
- package/link/core/core.cjs.native.js +1 -1
- package/link/http/checkFetcher.js +1 -1
- package/link/http/createHttpLink.d.ts.map +1 -1
- package/link/http/createHttpLink.js +2 -2
- package/link/http/createHttpLink.js.map +1 -1
- package/link/http/http.cjs +21 -11
- package/link/http/http.cjs.map +1 -1
- package/link/http/http.cjs.native.js +21 -11
- package/link/http/selectHttpOptionsAndBody.d.ts +2 -0
- package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
- package/link/http/selectHttpOptionsAndBody.js +17 -7
- package/link/http/selectHttpOptionsAndBody.js.map +1 -1
- package/link/http/serializeFetchParameter.js +1 -1
- package/link/persisted-queries/index.js +2 -2
- package/link/persisted-queries/persisted-queries.cjs +2 -2
- package/link/persisted-queries/persisted-queries.cjs.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs.native.js +2 -2
- package/link/utils/utils.cjs +1 -1
- package/link/utils/utils.cjs.map +1 -1
- package/link/utils/utils.cjs.native.js +1 -1
- package/link/utils/validateOperation.js +1 -1
- package/package.json +13 -13
- package/react/context/ApolloConsumer.js +1 -1
- package/react/context/ApolloProvider.js +1 -1
- package/react/context/context.cjs +2 -2
- package/react/context/context.cjs.map +1 -1
- package/react/context/context.cjs.native.js +2 -2
- package/react/hoc/hoc-utils.js +1 -1
- package/react/hoc/hoc.cjs +2 -2
- package/react/hoc/hoc.cjs.map +1 -1
- package/react/hoc/hoc.cjs.native.js +2 -2
- package/react/hoc/withApollo.js +1 -1
- package/react/hooks/hooks.cjs +4 -2
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +4 -2
- package/react/hooks/useApolloClient.js +1 -1
- package/react/hooks/useFragment.d.ts +1 -3
- package/react/hooks/useFragment.d.ts.map +1 -1
- package/react/hooks/useFragment.js.map +1 -1
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +1 -1
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useSubscription.d.ts.map +1 -1
- package/react/hooks/useSubscription.js +2 -0
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/parser/index.js +5 -5
- package/react/parser/parser.cjs +5 -5
- package/react/parser/parser.cjs.map +1 -1
- package/react/parser/parser.cjs.native.js +5 -5
- package/react/types/types.d.ts +1 -1
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/core.cjs +2 -2
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +2 -2
- package/testing/core/mocking/mockLink.js +2 -2
- package/testing/core/mocking/mockLink.js.map +1 -1
- package/utilities/globals/globals.cjs +1 -1
- package/utilities/globals/globals.cjs.map +1 -1
- package/utilities/globals/globals.cjs.native.js +1 -1
- package/utilities/globals/index.js +1 -1
- package/utilities/graphql/directives.d.ts +3 -1
- package/utilities/graphql/directives.d.ts.map +1 -1
- package/utilities/graphql/directives.js +12 -11
- package/utilities/graphql/directives.js.map +1 -1
- package/utilities/graphql/fragments.d.ts +2 -1
- package/utilities/graphql/fragments.d.ts.map +1 -1
- package/utilities/graphql/fragments.js +9 -5
- package/utilities/graphql/fragments.js.map +1 -1
- package/utilities/graphql/getFromAST.js +8 -8
- package/utilities/graphql/storeUtils.js +1 -1
- package/utilities/graphql/transform.d.ts.map +1 -1
- package/utilities/graphql/transform.js +3 -5
- package/utilities/graphql/transform.js.map +1 -1
- package/utilities/index.d.ts +2 -2
- package/utilities/index.d.ts.map +1 -1
- package/utilities/index.js +1 -1
- package/utilities/index.js.map +1 -1
- package/utilities/utilities.cjs +35 -30
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +35 -30
- package/version.js +1 -1
|
@@ -8,6 +8,7 @@ var optimism = require('optimism');
|
|
|
8
8
|
var utilities = require('../utilities');
|
|
9
9
|
var equality = require('@wry/equality');
|
|
10
10
|
var trie = require('@wry/trie');
|
|
11
|
+
var graphql = require('graphql');
|
|
11
12
|
var context = require('@wry/context');
|
|
12
13
|
|
|
13
14
|
var ApolloCache = (function () {
|
|
@@ -28,6 +29,9 @@ var ApolloCache = (function () {
|
|
|
28
29
|
ApolloCache.prototype.transformDocument = function (document) {
|
|
29
30
|
return document;
|
|
30
31
|
};
|
|
32
|
+
ApolloCache.prototype.transformForLink = function (document) {
|
|
33
|
+
return document;
|
|
34
|
+
};
|
|
31
35
|
ApolloCache.prototype.identify = function (object) {
|
|
32
36
|
return;
|
|
33
37
|
};
|
|
@@ -37,9 +41,6 @@ var ApolloCache = (function () {
|
|
|
37
41
|
ApolloCache.prototype.modify = function (options) {
|
|
38
42
|
return false;
|
|
39
43
|
};
|
|
40
|
-
ApolloCache.prototype.transformForLink = function (document) {
|
|
41
|
-
return document;
|
|
42
|
-
};
|
|
43
44
|
ApolloCache.prototype.readQuery = function (options, optimistic) {
|
|
44
45
|
if (optimistic === void 0) { optimistic = !!options.optimistic; }
|
|
45
46
|
return this.read(tslib.__assign(tslib.__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));
|
|
@@ -119,18 +120,23 @@ var MissingFieldError = (function (_super) {
|
|
|
119
120
|
}(Error));
|
|
120
121
|
|
|
121
122
|
var hasOwn = Object.prototype.hasOwnProperty;
|
|
123
|
+
function isNullish(value) {
|
|
124
|
+
return value === null || value === void 0;
|
|
125
|
+
}
|
|
126
|
+
var isArray = Array.isArray;
|
|
122
127
|
function defaultDataIdFromObject(_a, context) {
|
|
123
128
|
var __typename = _a.__typename, id = _a.id, _id = _a._id;
|
|
124
129
|
if (typeof __typename === "string") {
|
|
125
130
|
if (context) {
|
|
126
131
|
context.keyObject =
|
|
127
|
-
id
|
|
128
|
-
_id
|
|
132
|
+
!isNullish(id) ? { id: id } :
|
|
133
|
+
!isNullish(_id) ? { _id: _id } :
|
|
129
134
|
void 0;
|
|
130
135
|
}
|
|
131
|
-
if (id
|
|
136
|
+
if (isNullish(id) && !isNullish(_id)) {
|
|
132
137
|
id = _id;
|
|
133
|
-
|
|
138
|
+
}
|
|
139
|
+
if (!isNullish(id)) {
|
|
134
140
|
return "".concat(__typename, ":").concat((typeof id === "number" ||
|
|
135
141
|
typeof id === "string") ? id : JSON.stringify(id));
|
|
136
142
|
}
|
|
@@ -183,7 +189,19 @@ function storeValueIsStoreObject(value) {
|
|
|
183
189
|
function makeProcessedFieldsMerger() {
|
|
184
190
|
return new utilities.DeepMerger;
|
|
185
191
|
}
|
|
186
|
-
|
|
192
|
+
function extractFragmentContext(document, fragments) {
|
|
193
|
+
var fragmentMap = utilities.createFragmentMap(utilities.getFragmentDefinitions(document));
|
|
194
|
+
return {
|
|
195
|
+
fragmentMap: fragmentMap,
|
|
196
|
+
lookupFragment: function (name) {
|
|
197
|
+
var def = fragmentMap[name];
|
|
198
|
+
if (!def && fragments) {
|
|
199
|
+
def = fragments.lookup(name);
|
|
200
|
+
}
|
|
201
|
+
return def || null;
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
}
|
|
187
205
|
|
|
188
206
|
var DELETE = Object.create(null);
|
|
189
207
|
var delModifier = function () { return DELETE; };
|
|
@@ -823,15 +841,7 @@ var StoreReader = (function () {
|
|
|
823
841
|
selectionSet: utilities.getMainDefinition(query).selectionSet,
|
|
824
842
|
objectOrReference: rootRef,
|
|
825
843
|
enclosingRef: rootRef,
|
|
826
|
-
context: {
|
|
827
|
-
store: store,
|
|
828
|
-
query: query,
|
|
829
|
-
policies: policies,
|
|
830
|
-
variables: variables,
|
|
831
|
-
varString: canonicalStringify(variables),
|
|
832
|
-
canonizeResults: canonizeResults,
|
|
833
|
-
fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(query)),
|
|
834
|
-
},
|
|
844
|
+
context: tslib.__assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),
|
|
835
845
|
});
|
|
836
846
|
var missing;
|
|
837
847
|
if (execResult.missing) {
|
|
@@ -932,7 +942,10 @@ var StoreReader = (function () {
|
|
|
932
942
|
}
|
|
933
943
|
}
|
|
934
944
|
else {
|
|
935
|
-
var fragment = utilities.getFragmentFromSelection(selection, context.
|
|
945
|
+
var fragment = utilities.getFragmentFromSelection(selection, context.lookupFragment);
|
|
946
|
+
if (!fragment && selection.kind === graphql.Kind.FRAGMENT_SPREAD) {
|
|
947
|
+
throw __DEV__ ? new globals.InvariantError("No fragment named ".concat(selection.name.value)) : new globals.InvariantError(5);
|
|
948
|
+
}
|
|
936
949
|
if (fragment && policies.fragmentMatches(fragment, typename)) {
|
|
937
950
|
fragment.selectionSet.selections.forEach(workSet.add, workSet);
|
|
938
951
|
}
|
|
@@ -1012,7 +1025,7 @@ function assertSelectionSetForIdValue(store, field, fieldValue) {
|
|
|
1012
1025
|
var workSet_1 = new Set([fieldValue]);
|
|
1013
1026
|
workSet_1.forEach(function (value) {
|
|
1014
1027
|
if (utilities.isNonNullObject(value)) {
|
|
1015
|
-
__DEV__ ? globals.invariant(!utilities.isReference(value), "Missing selection set for object of type ".concat(getTypenameFromStoreObject(store, value), " returned for query field ").concat(field.name.value)) : globals.invariant(!utilities.isReference(value),
|
|
1028
|
+
__DEV__ ? globals.invariant(!utilities.isReference(value), "Missing selection set for object of type ".concat(getTypenameFromStoreObject(store, value), " returned for query field ").concat(field.name.value)) : globals.invariant(!utilities.isReference(value), 6);
|
|
1016
1029
|
Object.values(value).forEach(workSet_1.add, workSet_1);
|
|
1017
1030
|
}
|
|
1018
1031
|
});
|
|
@@ -1615,9 +1628,10 @@ function getContextFlavor(context, clientOnly, deferred) {
|
|
|
1615
1628
|
return flavored;
|
|
1616
1629
|
}
|
|
1617
1630
|
var StoreWriter = (function () {
|
|
1618
|
-
function StoreWriter(cache, reader) {
|
|
1631
|
+
function StoreWriter(cache, reader, fragments) {
|
|
1619
1632
|
this.cache = cache;
|
|
1620
1633
|
this.reader = reader;
|
|
1634
|
+
this.fragments = fragments;
|
|
1621
1635
|
}
|
|
1622
1636
|
StoreWriter.prototype.writeToStore = function (store, _a) {
|
|
1623
1637
|
var _this = this;
|
|
@@ -1625,21 +1639,9 @@ var StoreWriter = (function () {
|
|
|
1625
1639
|
var operationDefinition = utilities.getOperationDefinition(query);
|
|
1626
1640
|
var merger = makeProcessedFieldsMerger();
|
|
1627
1641
|
variables = tslib.__assign(tslib.__assign({}, utilities.getDefaultValues(operationDefinition)), variables);
|
|
1628
|
-
var context = {
|
|
1629
|
-
store: store,
|
|
1630
|
-
written: Object.create(null),
|
|
1631
|
-
merge: function (existing, incoming) {
|
|
1642
|
+
var context = tslib.__assign(tslib.__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {
|
|
1632
1643
|
return merger.merge(existing, incoming);
|
|
1633
|
-
},
|
|
1634
|
-
variables: variables,
|
|
1635
|
-
varString: canonicalStringify(variables),
|
|
1636
|
-
fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(query)),
|
|
1637
|
-
overwrite: !!overwrite,
|
|
1638
|
-
incomingById: new Map,
|
|
1639
|
-
clientOnly: false,
|
|
1640
|
-
deferred: false,
|
|
1641
|
-
flavors: new Map,
|
|
1642
|
-
};
|
|
1644
|
+
}, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map, clientOnly: false, deferred: false, flavors: new Map });
|
|
1643
1645
|
var ref = this.processSelectionSet({
|
|
1644
1646
|
result: result || Object.create(null),
|
|
1645
1647
|
dataId: dataId,
|
|
@@ -1648,7 +1650,7 @@ var StoreWriter = (function () {
|
|
|
1648
1650
|
context: context,
|
|
1649
1651
|
});
|
|
1650
1652
|
if (!utilities.isReference(ref)) {
|
|
1651
|
-
throw __DEV__ ? new globals.InvariantError("Could not identify object ".concat(JSON.stringify(result))) : new globals.InvariantError(
|
|
1653
|
+
throw __DEV__ ? new globals.InvariantError("Could not identify object ".concat(JSON.stringify(result))) : new globals.InvariantError(7);
|
|
1652
1654
|
}
|
|
1653
1655
|
context.incomingById.forEach(function (_a, dataId) {
|
|
1654
1656
|
var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;
|
|
@@ -1855,7 +1857,10 @@ var StoreWriter = (function () {
|
|
|
1855
1857
|
fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));
|
|
1856
1858
|
}
|
|
1857
1859
|
else {
|
|
1858
|
-
var fragment = utilities.getFragmentFromSelection(selection, context.
|
|
1860
|
+
var fragment = utilities.getFragmentFromSelection(selection, context.lookupFragment);
|
|
1861
|
+
if (!fragment && selection.kind === graphql.Kind.FRAGMENT_SPREAD) {
|
|
1862
|
+
throw __DEV__ ? new globals.InvariantError("No fragment named ".concat(selection.name.value)) : new globals.InvariantError(8);
|
|
1863
|
+
}
|
|
1859
1864
|
if (fragment &&
|
|
1860
1865
|
policies.fragmentMatches(fragment, typename, result, context.variables)) {
|
|
1861
1866
|
flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));
|
|
@@ -2027,6 +2032,7 @@ var InMemoryCache = (function (_super) {
|
|
|
2027
2032
|
InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {
|
|
2028
2033
|
var _this = this;
|
|
2029
2034
|
var previousReader = this.storeReader;
|
|
2035
|
+
var fragments = this.config.fragments;
|
|
2030
2036
|
this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({
|
|
2031
2037
|
cache: this,
|
|
2032
2038
|
addTypename: this.addTypename,
|
|
@@ -2035,7 +2041,8 @@ var InMemoryCache = (function (_super) {
|
|
|
2035
2041
|
canon: resetResultIdentities
|
|
2036
2042
|
? void 0
|
|
2037
2043
|
: previousReader && previousReader.canon,
|
|
2038
|
-
|
|
2044
|
+
fragments: fragments,
|
|
2045
|
+
}), fragments);
|
|
2039
2046
|
this.maybeBroadcastWatch = optimism.wrap(function (c, options) {
|
|
2040
2047
|
return _this.broadcastWatch(c, options);
|
|
2041
2048
|
}, {
|
|
@@ -2262,6 +2269,12 @@ var InMemoryCache = (function (_super) {
|
|
|
2262
2269
|
}
|
|
2263
2270
|
return document;
|
|
2264
2271
|
};
|
|
2272
|
+
InMemoryCache.prototype.transformForLink = function (document) {
|
|
2273
|
+
var fragments = this.config.fragments;
|
|
2274
|
+
return fragments
|
|
2275
|
+
? fragments.transform(document)
|
|
2276
|
+
: document;
|
|
2277
|
+
};
|
|
2265
2278
|
InMemoryCache.prototype.broadcastWatches = function (options) {
|
|
2266
2279
|
var _this = this;
|
|
2267
2280
|
if (!this.txCount) {
|
|
@@ -2288,6 +2301,115 @@ var InMemoryCache = (function (_super) {
|
|
|
2288
2301
|
return InMemoryCache;
|
|
2289
2302
|
}(ApolloCache));
|
|
2290
2303
|
|
|
2304
|
+
function createFragmentRegistry() {
|
|
2305
|
+
var fragments = [];
|
|
2306
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2307
|
+
fragments[_i] = arguments[_i];
|
|
2308
|
+
}
|
|
2309
|
+
return new (FragmentRegistry.bind.apply(FragmentRegistry, tslib.__spreadArray([void 0], fragments, false)))();
|
|
2310
|
+
}
|
|
2311
|
+
var arrayLikeForEach = Array.prototype.forEach;
|
|
2312
|
+
var FragmentRegistry = (function () {
|
|
2313
|
+
function FragmentRegistry() {
|
|
2314
|
+
var fragments = [];
|
|
2315
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
2316
|
+
fragments[_i] = arguments[_i];
|
|
2317
|
+
}
|
|
2318
|
+
this.registry = Object.create(null);
|
|
2319
|
+
this.resetCaches();
|
|
2320
|
+
if (fragments.length) {
|
|
2321
|
+
this.register.apply(this, fragments);
|
|
2322
|
+
}
|
|
2323
|
+
}
|
|
2324
|
+
FragmentRegistry.prototype.register = function () {
|
|
2325
|
+
var _this = this;
|
|
2326
|
+
var definitions = new Map();
|
|
2327
|
+
arrayLikeForEach.call(arguments, function (doc) {
|
|
2328
|
+
utilities.getFragmentDefinitions(doc).forEach(function (node) {
|
|
2329
|
+
definitions.set(node.name.value, node);
|
|
2330
|
+
});
|
|
2331
|
+
});
|
|
2332
|
+
definitions.forEach(function (node, name) {
|
|
2333
|
+
if (node !== _this.registry[name]) {
|
|
2334
|
+
_this.registry[name] = node;
|
|
2335
|
+
_this.invalidate(name);
|
|
2336
|
+
}
|
|
2337
|
+
});
|
|
2338
|
+
return this;
|
|
2339
|
+
};
|
|
2340
|
+
FragmentRegistry.prototype.invalidate = function (name) { };
|
|
2341
|
+
FragmentRegistry.prototype.resetCaches = function () {
|
|
2342
|
+
this.invalidate = (this.lookup = this.cacheUnaryMethod("lookup")).dirty;
|
|
2343
|
+
this.transform = this.cacheUnaryMethod("transform");
|
|
2344
|
+
this.findFragmentSpreads = this.cacheUnaryMethod("findFragmentSpreads");
|
|
2345
|
+
};
|
|
2346
|
+
FragmentRegistry.prototype.cacheUnaryMethod = function (name) {
|
|
2347
|
+
var registry = this;
|
|
2348
|
+
var originalMethod = FragmentRegistry.prototype[name];
|
|
2349
|
+
return optimism.wrap(function () {
|
|
2350
|
+
return originalMethod.apply(registry, arguments);
|
|
2351
|
+
}, {
|
|
2352
|
+
makeCacheKey: function (arg) { return arg; },
|
|
2353
|
+
});
|
|
2354
|
+
};
|
|
2355
|
+
FragmentRegistry.prototype.lookup = function (fragmentName) {
|
|
2356
|
+
return this.registry[fragmentName] || null;
|
|
2357
|
+
};
|
|
2358
|
+
FragmentRegistry.prototype.transform = function (document) {
|
|
2359
|
+
var _this = this;
|
|
2360
|
+
var defined = new Map();
|
|
2361
|
+
utilities.getFragmentDefinitions(document).forEach(function (def) {
|
|
2362
|
+
defined.set(def.name.value, def);
|
|
2363
|
+
});
|
|
2364
|
+
var unbound = new Set();
|
|
2365
|
+
var enqueue = function (spreadName) {
|
|
2366
|
+
if (!defined.has(spreadName)) {
|
|
2367
|
+
unbound.add(spreadName);
|
|
2368
|
+
}
|
|
2369
|
+
};
|
|
2370
|
+
var enqueueChildSpreads = function (node) { return Object.keys(_this.findFragmentSpreads(node)).forEach(enqueue); };
|
|
2371
|
+
enqueueChildSpreads(document);
|
|
2372
|
+
var missing = [];
|
|
2373
|
+
var map = Object.create(null);
|
|
2374
|
+
unbound.forEach(function (fragmentName) {
|
|
2375
|
+
var knownFragmentDef = defined.get(fragmentName);
|
|
2376
|
+
if (knownFragmentDef) {
|
|
2377
|
+
enqueueChildSpreads(map[fragmentName] = knownFragmentDef);
|
|
2378
|
+
}
|
|
2379
|
+
else {
|
|
2380
|
+
missing.push(fragmentName);
|
|
2381
|
+
var def = _this.lookup(fragmentName);
|
|
2382
|
+
if (def) {
|
|
2383
|
+
enqueueChildSpreads(map[fragmentName] = def);
|
|
2384
|
+
}
|
|
2385
|
+
}
|
|
2386
|
+
});
|
|
2387
|
+
if (missing.length) {
|
|
2388
|
+
var defsToAppend_1 = [];
|
|
2389
|
+
missing.forEach(function (name) {
|
|
2390
|
+
var def = map[name];
|
|
2391
|
+
if (def) {
|
|
2392
|
+
defsToAppend_1.push(def);
|
|
2393
|
+
}
|
|
2394
|
+
});
|
|
2395
|
+
if (defsToAppend_1.length) {
|
|
2396
|
+
document = tslib.__assign(tslib.__assign({}, document), { definitions: document.definitions.concat(defsToAppend_1) });
|
|
2397
|
+
}
|
|
2398
|
+
}
|
|
2399
|
+
return document;
|
|
2400
|
+
};
|
|
2401
|
+
FragmentRegistry.prototype.findFragmentSpreads = function (root) {
|
|
2402
|
+
var spreads = Object.create(null);
|
|
2403
|
+
graphql.visit(root, {
|
|
2404
|
+
FragmentSpread: function (node) {
|
|
2405
|
+
spreads[node.name.value] = node;
|
|
2406
|
+
},
|
|
2407
|
+
});
|
|
2408
|
+
return spreads;
|
|
2409
|
+
};
|
|
2410
|
+
return FragmentRegistry;
|
|
2411
|
+
}());
|
|
2412
|
+
|
|
2291
2413
|
exports.isReference = utilities.isReference;
|
|
2292
2414
|
exports.makeReference = utilities.makeReference;
|
|
2293
2415
|
exports.ApolloCache = ApolloCache;
|
|
@@ -2296,6 +2418,7 @@ exports.MissingFieldError = MissingFieldError;
|
|
|
2296
2418
|
exports.Policies = Policies;
|
|
2297
2419
|
exports.cacheSlot = cacheSlot;
|
|
2298
2420
|
exports.canonicalStringify = canonicalStringify;
|
|
2421
|
+
exports.createFragmentRegistry = createFragmentRegistry;
|
|
2299
2422
|
exports.defaultDataIdFromObject = defaultDataIdFromObject;
|
|
2300
2423
|
exports.fieldNameFromStoreName = fieldNameFromStoreName;
|
|
2301
2424
|
exports.makeVar = makeVar;
|
package/cache/core/cache.d.ts
CHANGED
|
@@ -17,10 +17,10 @@ export declare abstract class ApolloCache<TSerialized> implements DataProxy {
|
|
|
17
17
|
abstract performTransaction(transaction: Transaction<TSerialized>, optimisticId?: string | null): void;
|
|
18
18
|
recordOptimisticTransaction(transaction: Transaction<TSerialized>, optimisticId: string): void;
|
|
19
19
|
transformDocument(document: DocumentNode): DocumentNode;
|
|
20
|
+
transformForLink(document: DocumentNode): DocumentNode;
|
|
20
21
|
identify(object: StoreObject | Reference): string | undefined;
|
|
21
22
|
gc(): string[];
|
|
22
23
|
modify(options: Cache.ModifyOptions): boolean;
|
|
23
|
-
transformForLink(document: DocumentNode): DocumentNode;
|
|
24
24
|
readQuery<QueryType, TVariables = any>(options: Cache.ReadQueryOptions<QueryType, TVariables>, optimistic?: boolean): QueryType | null;
|
|
25
25
|
private getFragmentDoc;
|
|
26
26
|
readFragment<FragmentType, TVariables = any>(options: Cache.ReadFragmentOptions<FragmentType, TVariables>, optimistic?: boolean): FragmentType | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/cache/core/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,OAAO,EACL,WAAW,EACX,SAAS,EAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,oBAAY,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEzD,8BAAsB,WAAW,CAAC,WAAW,CAAE,YAAW,SAAS;aAGjD,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,GAAG,EAChD,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,GAC1C,KAAK,GAAG,IAAI;aACC,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,GAAG,EACjD,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,GAC3C,SAAS,GAAG,SAAS;aACR,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;aACtD,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,GAAG,GAAG,EACjD,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,GAC3C,MAAM,IAAI;aAIG,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;aAOlD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO;aAU3C,OAAO,CACrB,eAAe,EAAE,WAAW,GAC3B,WAAW,CAAC,WAAW,CAAC;aAKX,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,WAAW;aAI1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS3C,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;aAYxC,kBAAkB,CAChC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,EAQrC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,IAAI;IAEA,2BAA2B,CAChC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,EACrC,YAAY,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/cache/core/cache.ts"],"names":[],"mappings":"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"}
|
package/cache/core/cache.js
CHANGED
|
@@ -19,6 +19,9 @@ var ApolloCache = (function () {
|
|
|
19
19
|
ApolloCache.prototype.transformDocument = function (document) {
|
|
20
20
|
return document;
|
|
21
21
|
};
|
|
22
|
+
ApolloCache.prototype.transformForLink = function (document) {
|
|
23
|
+
return document;
|
|
24
|
+
};
|
|
22
25
|
ApolloCache.prototype.identify = function (object) {
|
|
23
26
|
return;
|
|
24
27
|
};
|
|
@@ -28,9 +31,6 @@ var ApolloCache = (function () {
|
|
|
28
31
|
ApolloCache.prototype.modify = function (options) {
|
|
29
32
|
return false;
|
|
30
33
|
};
|
|
31
|
-
ApolloCache.prototype.transformForLink = function (document) {
|
|
32
|
-
return document;
|
|
33
|
-
};
|
|
34
34
|
ApolloCache.prototype.readQuery = function (options, optimistic) {
|
|
35
35
|
if (optimistic === void 0) { optimistic = !!options.optimistic; }
|
|
36
36
|
return this.read(__assign(__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));
|
package/cache/core/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/cache/core/cache.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,EAGL,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAMzB;IAAA;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/cache/core/cache.ts"],"names":[],"mappings":"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","sourcesContent":["import { DocumentNode } from 'graphql';\nimport { wrap } from 'optimism';\n\nimport {\n StoreObject,\n Reference,\n getFragmentQueryDocument,\n} from '../../utilities';\nimport { DataProxy } from './types/DataProxy';\nimport { Cache } from './types/Cache';\n\nexport type Transaction<T> = (c: ApolloCache<T>) => void;\n\nexport abstract class ApolloCache<TSerialized> implements DataProxy {\n // required to implement\n // core API\n public abstract read<TData = any, TVariables = any>(\n query: Cache.ReadOptions<TVariables, TData>,\n ): TData | null;\n public abstract write<TData = any, TVariables = any>(\n write: Cache.WriteOptions<TData, TVariables>,\n ): Reference | undefined;\n public abstract diff<T>(query: Cache.DiffOptions): Cache.DiffResult<T>;\n public abstract watch<TData = any, TVariables = any>(\n watch: Cache.WatchOptions<TData, TVariables>,\n ): () => void;\n\n // Empty the cache and restart all current watches (unless\n // options.discardWatches is true).\n public abstract reset(options?: Cache.ResetOptions): Promise<void>;\n\n // Remove whole objects from the cache by passing just options.id, or\n // specific fields by passing options.field and/or options.args. If no\n // options.args are provided, all fields matching options.field (even\n // those with arguments) will be removed. Returns true iff any data was\n // removed from the cache.\n public abstract evict(options: Cache.EvictOptions): boolean;\n\n // initializer / offline / ssr API\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n public abstract restore(\n serializedState: TSerialized,\n ): ApolloCache<TSerialized>;\n\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n public abstract extract(optimistic?: boolean): TSerialized;\n\n // Optimistic API\n\n public abstract removeOptimistic(id: string): void;\n\n // Transactional API\n\n // The batch method is intended to replace/subsume both performTransaction\n // and recordOptimisticTransaction, but performTransaction came first, so we\n // provide a default batch implementation that's just another way of calling\n // performTransaction. Subclasses of ApolloCache (such as InMemoryCache) can\n // override the batch method to do more interesting things with its options.\n public batch<U>(options: Cache.BatchOptions<this, U>): U {\n const optimisticId =\n typeof options.optimistic === \"string\" ? options.optimistic :\n options.optimistic === false ? null : void 0;\n let updateResult: U;\n this.performTransaction(\n () => updateResult = options.update(this),\n optimisticId,\n );\n return updateResult!;\n }\n\n public abstract performTransaction(\n transaction: Transaction<TSerialized>,\n // Although subclasses may implement recordOptimisticTransaction\n // however they choose, the default implementation simply calls\n // performTransaction with a string as the second argument, allowing\n // performTransaction to handle both optimistic and non-optimistic\n // (broadcast-batching) transactions. Passing null for optimisticId is\n // also allowed, and indicates that performTransaction should apply\n // the transaction non-optimistically (ignoring optimistic data).\n optimisticId?: string | null,\n ): void;\n\n public recordOptimisticTransaction(\n transaction: Transaction<TSerialized>,\n optimisticId: string,\n ) {\n this.performTransaction(transaction, optimisticId);\n }\n\n // Optional API\n\n // Called once per input document, allowing the cache to make static changes\n // to the query, such as adding __typename fields.\n public transformDocument(document: DocumentNode): DocumentNode {\n return document;\n }\n\n // Called before each ApolloLink request, allowing the cache to make dynamic\n // changes to the query, such as filling in missing fragment definitions.\n public transformForLink(document: DocumentNode): DocumentNode {\n return document;\n }\n\n public identify(object: StoreObject | Reference): string | undefined {\n return;\n }\n\n public gc(): string[] {\n return [];\n }\n\n public modify(options: Cache.ModifyOptions): boolean {\n return false;\n }\n\n // DataProxy API\n /**\n *\n * @param options\n * @param optimistic\n */\n public readQuery<QueryType, TVariables = any>(\n options: Cache.ReadQueryOptions<QueryType, TVariables>,\n optimistic = !!options.optimistic,\n ): QueryType | null {\n return this.read({\n ...options,\n rootId: options.id || 'ROOT_QUERY',\n optimistic,\n });\n }\n\n // Make sure we compute the same (===) fragment query document every\n // time we receive the same fragment in readFragment.\n private getFragmentDoc = wrap(getFragmentQueryDocument);\n\n public readFragment<FragmentType, TVariables = any>(\n options: Cache.ReadFragmentOptions<FragmentType, TVariables>,\n optimistic = !!options.optimistic,\n ): FragmentType | null {\n return this.read({\n ...options,\n query: this.getFragmentDoc(options.fragment, options.fragmentName),\n rootId: options.id,\n optimistic,\n });\n }\n\n public writeQuery<TData = any, TVariables = any>({\n id,\n data,\n ...options\n }: Cache.WriteQueryOptions<TData, TVariables>): Reference | undefined {\n return this.write(Object.assign(options, {\n dataId: id || 'ROOT_QUERY',\n result: data,\n }));\n }\n\n public writeFragment<TData = any, TVariables = any>({\n id,\n data,\n fragment,\n fragmentName,\n ...options\n }: Cache.WriteFragmentOptions<TData, TVariables>): Reference | undefined {\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n }\n\n public updateQuery<TData = any, TVariables = any>(\n options: Cache.UpdateQueryOptions<TData, TVariables>,\n update: (data: TData | null) => TData | null | void,\n ): TData | null {\n return this.batch({\n update(cache) {\n const value = cache.readQuery<TData, TVariables>(options);\n const data = update(value);\n if (data === void 0 || data === null) return value;\n cache.writeQuery<TData, TVariables>({ ...options, data });\n return data;\n },\n });\n }\n\n public updateFragment<TData = any, TVariables = any>(\n options: Cache.UpdateFragmentOptions<TData, TVariables>,\n update: (data: TData | null) => TData | null | void,\n ): TData | null {\n return this.batch({\n update(cache) {\n const value = cache.readFragment<TData, TVariables>(options);\n const data = update(value);\n if (data === void 0 || data === null) return value;\n cache.writeFragment<TData, TVariables>({ ...options, data });\n return data;\n },\n });\n }\n}\n"]}
|
package/cache/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import '../utilities/globals';
|
|
|
2
2
|
export { Transaction, ApolloCache } from './core/cache';
|
|
3
3
|
export { Cache } from './core/types/Cache';
|
|
4
4
|
export { DataProxy } from './core/types/DataProxy';
|
|
5
|
-
export { MissingTree, MissingFieldError, ReadFieldOptions } from './core/types/common';
|
|
5
|
+
export { MissingTree, Modifier, Modifiers, MissingFieldError, ReadFieldOptions } from './core/types/common';
|
|
6
6
|
export { Reference, isReference, makeReference, } from '../utilities';
|
|
7
7
|
export { EntityStore } from './inmemory/entityStore';
|
|
8
8
|
export { fieldNameFromStoreName, defaultDataIdFromObject, } from './inmemory/helpers';
|
|
@@ -10,5 +10,6 @@ export { InMemoryCache, } from './inmemory/inMemoryCache';
|
|
|
10
10
|
export { ReactiveVar, makeVar, cacheSlot, } from './inmemory/reactiveVars';
|
|
11
11
|
export { TypePolicies, TypePolicy, FieldPolicy, FieldReadFunction, FieldMergeFunction, FieldFunctionOptions, PossibleTypesMap, Policies, } from './inmemory/policies';
|
|
12
12
|
export { canonicalStringify, } from './inmemory/object-canon';
|
|
13
|
+
export { FragmentRegistryAPI, createFragmentRegistry, } from './inmemory/fragmentRegistry';
|
|
13
14
|
export * from './inmemory/types';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
package/cache/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,aAAa,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,OAAO,EACP,SAAS,GACV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,aAAa,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,OAAO,EACP,SAAS,GACV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAErC,cAAc,kBAAkB,CAAC"}
|
package/cache/index.js
CHANGED
|
@@ -9,5 +9,6 @@ export { InMemoryCache, } from "./inmemory/inMemoryCache.js";
|
|
|
9
9
|
export { makeVar, cacheSlot, } from "./inmemory/reactiveVars.js";
|
|
10
10
|
export { Policies, } from "./inmemory/policies.js";
|
|
11
11
|
export { canonicalStringify, } from "./inmemory/object-canon.js";
|
|
12
|
+
export { createFragmentRegistry, } from "./inmemory/fragmentRegistry.js";
|
|
12
13
|
export * from "./inmemory/types.js";
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/cache/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAe,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAe,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAIL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,aAAa,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAEL,OAAO,EACP,SAAS,GACV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAQL,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAErC,cAAc,kBAAkB,CAAC","sourcesContent":["import '../utilities/globals';\n\nexport { Transaction, ApolloCache } from './core/cache';\nexport { Cache } from './core/types/Cache';\nexport { DataProxy } from './core/types/DataProxy';\nexport {\n MissingTree,\n Modifier,\n Modifiers,\n MissingFieldError,\n ReadFieldOptions\n} from './core/types/common';\n\nexport {\n Reference,\n isReference,\n makeReference,\n} from '../utilities';\n\nexport { EntityStore } from './inmemory/entityStore';\nexport {\n fieldNameFromStoreName,\n defaultDataIdFromObject,\n} from './inmemory/helpers'\n\nexport {\n InMemoryCache,\n} from './inmemory/inMemoryCache';\n\nexport {\n ReactiveVar,\n makeVar,\n cacheSlot,\n} from './inmemory/reactiveVars';\n\nexport {\n TypePolicies,\n TypePolicy,\n FieldPolicy,\n FieldReadFunction,\n FieldMergeFunction,\n FieldFunctionOptions,\n PossibleTypesMap,\n Policies,\n} from './inmemory/policies';\n\nexport {\n canonicalStringify,\n} from './inmemory/object-canon';\n\nexport {\n FragmentRegistryAPI,\n createFragmentRegistry,\n} from './inmemory/fragmentRegistry';\n\nexport * from './inmemory/types';\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DocumentNode, FragmentDefinitionNode } from "graphql";
|
|
2
|
+
export interface FragmentRegistryAPI {
|
|
3
|
+
register(...fragments: DocumentNode[]): this;
|
|
4
|
+
lookup(fragmentName: string): FragmentDefinitionNode | null;
|
|
5
|
+
transform<D extends DocumentNode>(document: D): D;
|
|
6
|
+
}
|
|
7
|
+
export declare function createFragmentRegistry(...fragments: DocumentNode[]): FragmentRegistryAPI;
|
|
8
|
+
//# sourceMappingURL=fragmentRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragmentRegistry.d.ts","sourceRoot":"","sources":["../../../src/cache/inmemory/fragmentRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,sBAAsB,EAGvB,MAAM,SAAS,CAAC;AAMjB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC7C,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC;IAC5D,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CACnD;AAQD,wBAAgB,sBAAsB,CACpC,GAAG,SAAS,EAAE,YAAY,EAAE,GAC3B,mBAAmB,CAErB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { __assign, __spreadArray } from "tslib";
|
|
2
|
+
import { visit, } from "graphql";
|
|
3
|
+
import { wrap } from "optimism";
|
|
4
|
+
import { getFragmentDefinitions } from "../../utilities/index.js";
|
|
5
|
+
export function createFragmentRegistry() {
|
|
6
|
+
var fragments = [];
|
|
7
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
8
|
+
fragments[_i] = arguments[_i];
|
|
9
|
+
}
|
|
10
|
+
return new (FragmentRegistry.bind.apply(FragmentRegistry, __spreadArray([void 0], fragments, false)))();
|
|
11
|
+
}
|
|
12
|
+
var arrayLikeForEach = Array.prototype.forEach;
|
|
13
|
+
var FragmentRegistry = (function () {
|
|
14
|
+
function FragmentRegistry() {
|
|
15
|
+
var fragments = [];
|
|
16
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
17
|
+
fragments[_i] = arguments[_i];
|
|
18
|
+
}
|
|
19
|
+
this.registry = Object.create(null);
|
|
20
|
+
this.resetCaches();
|
|
21
|
+
if (fragments.length) {
|
|
22
|
+
this.register.apply(this, fragments);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
FragmentRegistry.prototype.register = function () {
|
|
26
|
+
var _this = this;
|
|
27
|
+
var definitions = new Map();
|
|
28
|
+
arrayLikeForEach.call(arguments, function (doc) {
|
|
29
|
+
getFragmentDefinitions(doc).forEach(function (node) {
|
|
30
|
+
definitions.set(node.name.value, node);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
definitions.forEach(function (node, name) {
|
|
34
|
+
if (node !== _this.registry[name]) {
|
|
35
|
+
_this.registry[name] = node;
|
|
36
|
+
_this.invalidate(name);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return this;
|
|
40
|
+
};
|
|
41
|
+
FragmentRegistry.prototype.invalidate = function (name) { };
|
|
42
|
+
FragmentRegistry.prototype.resetCaches = function () {
|
|
43
|
+
this.invalidate = (this.lookup = this.cacheUnaryMethod("lookup")).dirty;
|
|
44
|
+
this.transform = this.cacheUnaryMethod("transform");
|
|
45
|
+
this.findFragmentSpreads = this.cacheUnaryMethod("findFragmentSpreads");
|
|
46
|
+
};
|
|
47
|
+
FragmentRegistry.prototype.cacheUnaryMethod = function (name) {
|
|
48
|
+
var registry = this;
|
|
49
|
+
var originalMethod = FragmentRegistry.prototype[name];
|
|
50
|
+
return wrap(function () {
|
|
51
|
+
return originalMethod.apply(registry, arguments);
|
|
52
|
+
}, {
|
|
53
|
+
makeCacheKey: function (arg) { return arg; },
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
FragmentRegistry.prototype.lookup = function (fragmentName) {
|
|
57
|
+
return this.registry[fragmentName] || null;
|
|
58
|
+
};
|
|
59
|
+
FragmentRegistry.prototype.transform = function (document) {
|
|
60
|
+
var _this = this;
|
|
61
|
+
var defined = new Map();
|
|
62
|
+
getFragmentDefinitions(document).forEach(function (def) {
|
|
63
|
+
defined.set(def.name.value, def);
|
|
64
|
+
});
|
|
65
|
+
var unbound = new Set();
|
|
66
|
+
var enqueue = function (spreadName) {
|
|
67
|
+
if (!defined.has(spreadName)) {
|
|
68
|
+
unbound.add(spreadName);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
var enqueueChildSpreads = function (node) { return Object.keys(_this.findFragmentSpreads(node)).forEach(enqueue); };
|
|
72
|
+
enqueueChildSpreads(document);
|
|
73
|
+
var missing = [];
|
|
74
|
+
var map = Object.create(null);
|
|
75
|
+
unbound.forEach(function (fragmentName) {
|
|
76
|
+
var knownFragmentDef = defined.get(fragmentName);
|
|
77
|
+
if (knownFragmentDef) {
|
|
78
|
+
enqueueChildSpreads(map[fragmentName] = knownFragmentDef);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
missing.push(fragmentName);
|
|
82
|
+
var def = _this.lookup(fragmentName);
|
|
83
|
+
if (def) {
|
|
84
|
+
enqueueChildSpreads(map[fragmentName] = def);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
if (missing.length) {
|
|
89
|
+
var defsToAppend_1 = [];
|
|
90
|
+
missing.forEach(function (name) {
|
|
91
|
+
var def = map[name];
|
|
92
|
+
if (def) {
|
|
93
|
+
defsToAppend_1.push(def);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
if (defsToAppend_1.length) {
|
|
97
|
+
document = __assign(__assign({}, document), { definitions: document.definitions.concat(defsToAppend_1) });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return document;
|
|
101
|
+
};
|
|
102
|
+
FragmentRegistry.prototype.findFragmentSpreads = function (root) {
|
|
103
|
+
var spreads = Object.create(null);
|
|
104
|
+
visit(root, {
|
|
105
|
+
FragmentSpread: function (node) {
|
|
106
|
+
spreads[node.name.value] = node;
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
return spreads;
|
|
110
|
+
};
|
|
111
|
+
return FragmentRegistry;
|
|
112
|
+
}());
|
|
113
|
+
//# sourceMappingURL=fragmentRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragmentRegistry.js","sourceRoot":"","sources":["../../../src/cache/inmemory/fragmentRegistry.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DocumentNode,\n ASTNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n visit,\n} from \"graphql\";\n\nimport { wrap } from \"optimism\";\n\nimport { FragmentMap, getFragmentDefinitions } from \"../../utilities\";\n\nexport interface FragmentRegistryAPI {\n register(...fragments: DocumentNode[]): this;\n lookup(fragmentName: string): FragmentDefinitionNode | null;\n transform<D extends DocumentNode>(document: D): D;\n}\n\n// As long as createFragmentRegistry is not imported or used, the\n// FragmentRegistry example implementation provided below should not be bundled\n// (by tree-shaking bundlers like Rollup), because the implementation of\n// InMemoryCache refers only to the TypeScript interface FragmentRegistryAPI,\n// never the concrete implementation FragmentRegistry (which is deliberately not\n// exported from this module).\nexport function createFragmentRegistry(\n ...fragments: DocumentNode[]\n): FragmentRegistryAPI {\n return new FragmentRegistry(...fragments);\n}\n\nconst { forEach: arrayLikeForEach } = Array.prototype;\n\nclass FragmentRegistry implements FragmentRegistryAPI {\n private registry: FragmentMap = Object.create(null);\n\n // Call static method FragmentRegistry.from(...) instead of invoking the\n // FragmentRegistry constructor directly. This reserves the constructor for\n // future configuration of the FragmentRegistry.\n constructor(...fragments: DocumentNode[]) {\n this.resetCaches();\n if (fragments.length) {\n this.register.apply(this, fragments);\n }\n }\n\n public register(): this {\n const definitions = new Map<string, FragmentDefinitionNode>();\n arrayLikeForEach.call(arguments, (doc: DocumentNode) => {\n getFragmentDefinitions(doc).forEach(node => {\n definitions.set(node.name.value, node);\n });\n });\n\n definitions.forEach((node, name) => {\n if (node !== this.registry[name]) {\n this.registry[name] = node;\n this.invalidate(name);\n }\n });\n\n return this;\n }\n\n // Overridden in the resetCaches method below.\n private invalidate(name: string) {}\n\n public resetCaches() {\n this.invalidate = (\n this.lookup = this.cacheUnaryMethod(\"lookup\")\n ).dirty; // This dirty function is bound to the wrapped lookup method.\n this.transform = this.cacheUnaryMethod(\"transform\");\n this.findFragmentSpreads = this.cacheUnaryMethod(\"findFragmentSpreads\");\n }\n\n private cacheUnaryMethod<TName extends keyof Pick<FragmentRegistry,\n | \"lookup\"\n | \"transform\"\n | \"findFragmentSpreads\"\n >>(name: TName) {\n const registry = this;\n const originalMethod = FragmentRegistry.prototype[name];\n return wrap(function () {\n return originalMethod.apply(registry, arguments);\n }, {\n makeCacheKey: arg => arg,\n });\n }\n\n public lookup(fragmentName: string): FragmentDefinitionNode | null {\n return this.registry[fragmentName] || null;\n }\n\n public transform<D extends DocumentNode>(document: D): D {\n const defined = new Map<string, FragmentDefinitionNode>();\n getFragmentDefinitions(document).forEach(def => {\n defined.set(def.name.value, def);\n });\n\n const unbound = new Set<string>();\n const enqueue = (spreadName: string) => {\n if (!defined.has(spreadName)) {\n unbound.add(spreadName);\n }\n };\n\n const enqueueChildSpreads = (node: ASTNode) => Object.keys(\n this.findFragmentSpreads(node)\n ).forEach(enqueue);\n\n enqueueChildSpreads(document);\n\n const missing: string[] = [];\n const map: FragmentMap = Object.create(null);\n\n // This Set forEach loop can be extended during iteration by adding\n // additional strings to the unbound set.\n unbound.forEach(fragmentName => {\n const knownFragmentDef = defined.get(fragmentName);\n if (knownFragmentDef) {\n enqueueChildSpreads(map[fragmentName] = knownFragmentDef);\n } else {\n missing.push(fragmentName);\n const def = this.lookup(fragmentName);\n if (def) {\n enqueueChildSpreads(map[fragmentName] = def);\n }\n }\n });\n\n if (missing.length) {\n const defsToAppend: FragmentDefinitionNode[] = [];\n missing.forEach(name => {\n const def = map[name];\n if (def) {\n defsToAppend.push(def);\n }\n });\n\n if (defsToAppend.length) {\n document = {\n ...document,\n definitions: document.definitions.concat(defsToAppend),\n };\n }\n }\n\n return document;\n }\n\n public findFragmentSpreads(root: ASTNode): FragmentSpreadMap {\n const spreads: FragmentSpreadMap = Object.create(null);\n\n visit(root, {\n FragmentSpread(node) {\n spreads[node.name.value] = node;\n },\n });\n\n return spreads;\n }\n}\n\ninterface FragmentSpreadMap {\n [fragmentSpreadName: string]: FragmentSpreadNode;\n}\n"]}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { SelectionSetNode } from 'graphql';
|
|
1
|
+
import { DocumentNode, SelectionSetNode } from 'graphql';
|
|
2
2
|
import { NormalizedCache, InMemoryCacheConfig } from './types';
|
|
3
3
|
import { KeyFieldsContext } from './policies';
|
|
4
|
-
import {
|
|
4
|
+
import { FragmentRegistryAPI } from './fragmentRegistry';
|
|
5
|
+
import { Reference, StoreValue, StoreObject, DeepMerger, FragmentMap, FragmentMapFunction } from '../../utilities';
|
|
5
6
|
export declare const hasOwn: (v: PropertyKey) => boolean;
|
|
7
|
+
export declare function isNullish(value: any): value is null | undefined;
|
|
8
|
+
export declare const isArray: (a: any) => a is any[] | readonly any[];
|
|
6
9
|
export declare function defaultDataIdFromObject({ __typename, id, _id }: Readonly<StoreObject>, context?: KeyFieldsContext): string | undefined;
|
|
7
10
|
export declare function normalizeConfig(config: InMemoryCacheConfig): {
|
|
8
11
|
dataIdFromObject: typeof defaultDataIdFromObject;
|
|
@@ -17,5 +20,8 @@ export declare function fieldNameFromStoreName(storeFieldName: string): string;
|
|
|
17
20
|
export declare function selectionSetMatchesResult(selectionSet: SelectionSetNode, result: Record<string, any>, variables?: Record<string, any>): boolean;
|
|
18
21
|
export declare function storeValueIsStoreObject(value: StoreValue): value is StoreObject;
|
|
19
22
|
export declare function makeProcessedFieldsMerger(): DeepMerger<any[]>;
|
|
20
|
-
export declare
|
|
23
|
+
export declare function extractFragmentContext(document: DocumentNode, fragments?: FragmentRegistryAPI): {
|
|
24
|
+
fragmentMap: FragmentMap;
|
|
25
|
+
lookupFragment: FragmentMapFunction;
|
|
26
|
+
};
|
|
21
27
|
//# sourceMappingURL=helpers.d.ts.map
|