@apollo/client 3.9.0-alpha.5 → 3.9.0-beta.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/.changeset/dirty-tigers-matter.md +13 -0
- package/.changeset/mighty-coats-check.md +47 -0
- package/.changeset/pre.json +9 -1
- package/.changeset/rare-snakes-melt.md +24 -0
- package/.changeset/swift-zoos-collect.md +19 -0
- package/.changeset/thick-tips-cry.md +9 -0
- package/.changeset/tough-timers-begin.md +8 -0
- package/.changeset/unlucky-rats-decide.md +5 -0
- package/.changeset/wet-forks-rhyme.md +5 -0
- package/CHANGELOG.md +118 -4
- package/apollo-client.cjs +329 -82
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/cache.cjs +78 -6
- package/cache/cache.cjs.map +1 -1
- package/cache/cache.cjs.native.js +78 -6
- package/cache/core/cache.d.ts +9 -0
- package/cache/core/cache.js +11 -2
- package/cache/core/cache.js.map +1 -1
- package/cache/core/types/Cache.d.ts +7 -0
- package/cache/core/types/Cache.js.map +1 -1
- package/cache/core/types/DataProxy.d.ts +12 -0
- package/cache/core/types/DataProxy.js.map +1 -1
- package/cache/core/types/common.d.ts +4 -0
- package/cache/core/types/common.js.map +1 -1
- package/cache/inmemory/fragmentRegistry.js +19 -3
- package/cache/inmemory/fragmentRegistry.js.map +1 -1
- package/cache/inmemory/inMemoryCache.d.ts +9 -0
- package/cache/inmemory/inMemoryCache.js +8 -2
- package/cache/inmemory/inMemoryCache.js.map +1 -1
- package/cache/inmemory/readFromStore.js +7 -3
- package/cache/inmemory/readFromStore.js.map +1 -1
- package/cache/inmemory/types.d.ts +18 -0
- package/cache/inmemory/types.js.map +1 -1
- package/core/ApolloClient.d.ts +9 -0
- package/core/ApolloClient.js +4 -0
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.d.ts +2 -0
- package/core/ObservableQuery.js +7 -1
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts +1 -0
- package/core/QueryInfo.js +4 -0
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts +1 -1
- package/core/QueryManager.js +15 -10
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +99 -12
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +99 -12
- package/core/watchQueryOptions.d.ts +20 -1
- package/core/watchQueryOptions.js.map +1 -1
- package/dev/dev.cjs +1 -1
- package/dev/dev.cjs.map +1 -1
- package/dev/dev.cjs.native.js +1 -1
- package/link/core/ApolloLink.d.ts +15 -0
- package/link/core/ApolloLink.js +8 -4
- package/link/core/ApolloLink.js.map +1 -1
- package/link/core/core.cjs +8 -4
- package/link/core/core.cjs.map +1 -1
- package/link/core/core.cjs.native.js +8 -4
- package/link/persisted-queries/index.d.ts +11 -1
- package/link/persisted-queries/index.js +28 -3
- package/link/persisted-queries/index.js.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs +26 -3
- package/link/persisted-queries/persisted-queries.cjs.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs.native.js +26 -3
- package/link/remove-typename/remove-typename.cjs +18 -2
- package/link/remove-typename/remove-typename.cjs.map +1 -1
- package/link/remove-typename/remove-typename.cjs.native.js +18 -2
- package/link/remove-typename/removeTypenameFromVariables.d.ts +9 -1
- package/link/remove-typename/removeTypenameFromVariables.js +19 -3
- package/link/remove-typename/removeTypenameFromVariables.js.map +1 -1
- package/package.json +21 -21
- package/react/cache/QueryReference.d.ts +11 -5
- package/react/cache/QueryReference.js +91 -55
- package/react/cache/QueryReference.js.map +1 -1
- package/react/hooks/hooks.cjs +112 -52
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +112 -52
- package/react/hooks/index.d.ts +2 -0
- package/react/hooks/index.js +1 -0
- package/react/hooks/index.js.map +1 -1
- package/react/hooks/useBackgroundQuery.d.ts +12 -9
- package/react/hooks/useBackgroundQuery.js +1 -1
- package/react/hooks/useBackgroundQuery.js.map +1 -1
- package/react/hooks/useLoadableQuery.d.ts +1 -1
- package/react/hooks/useLoadableQuery.js +1 -1
- package/react/hooks/useLoadableQuery.js.map +1 -1
- package/react/hooks/useQueryRefHandlers.d.ts +35 -0
- package/react/hooks/useQueryRefHandlers.js +48 -0
- package/react/hooks/useQueryRefHandlers.js.map +1 -0
- package/react/hooks/useReadQuery.js +8 -2
- package/react/hooks/useReadQuery.js.map +1 -1
- package/react/index.d.ts +2 -0
- package/react/index.js +1 -0
- package/react/index.js.map +1 -1
- package/react/parser/index.js +6 -3
- package/react/parser/index.js.map +1 -1
- package/react/parser/parser.cjs +11 -3
- package/react/parser/parser.cjs.map +1 -1
- package/react/parser/parser.cjs.native.js +11 -3
- package/react/query-preloader/createQueryPreloader.d.ts +253 -0
- package/react/query-preloader/createQueryPreloader.js +29 -0
- package/react/query-preloader/createQueryPreloader.js.map +1 -0
- package/react/react.cjs +248 -1
- package/react/react.cjs.map +1 -1
- package/react/react.cjs.native.js +248 -1
- package/react/types/types.d.ts +6 -0
- package/react/types/types.js.map +1 -1
- package/testing/internal/index.d.ts +4 -0
- package/testing/internal/index.js +2 -0
- package/testing/internal/index.js.map +1 -1
- package/testing/internal/renderHelpers.d.ts +12 -0
- package/testing/internal/renderHelpers.js +22 -0
- package/testing/internal/renderHelpers.js.map +1 -0
- package/testing/internal/scenarios/index.d.ts +41 -0
- package/testing/internal/scenarios/index.js +46 -0
- package/testing/internal/scenarios/index.js.map +1 -0
- package/testing/matchers/index.js +2 -0
- package/testing/matchers/index.js.map +1 -1
- package/testing/matchers/toBeDisposed.d.ts +3 -0
- package/testing/matchers/toBeDisposed.js +26 -0
- package/testing/matchers/toBeDisposed.js.map +1 -0
- package/utilities/caching/caches.d.ts +34 -0
- package/utilities/caching/caches.js +64 -0
- package/utilities/caching/caches.js.map +1 -0
- package/utilities/caching/getMemoryInternals.d.ts +76 -0
- package/utilities/caching/getMemoryInternals.js +112 -0
- package/utilities/caching/getMemoryInternals.js.map +1 -0
- package/utilities/caching/index.d.ts +4 -0
- package/utilities/caching/index.js +3 -0
- package/utilities/caching/index.js.map +1 -0
- package/utilities/caching/sizes.d.ts +261 -0
- package/utilities/caching/sizes.js +27 -0
- package/utilities/caching/sizes.js.map +1 -0
- package/utilities/common/canUse.js +1 -1
- package/utilities/common/canUse.js.map +1 -1
- package/utilities/common/canonicalStringify.js +8 -2
- package/utilities/common/canonicalStringify.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/graphql/DocumentTransform.d.ts +14 -1
- package/utilities/graphql/DocumentTransform.js +9 -5
- package/utilities/graphql/DocumentTransform.js.map +1 -1
- package/utilities/graphql/print.js +6 -2
- package/utilities/graphql/print.js.map +1 -1
- package/utilities/index.d.ts +2 -0
- package/utilities/index.js +1 -0
- package/utilities/index.js.map +1 -1
- package/utilities/utilities.cjs +57 -9
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +57 -9
- package/version.js +1 -1
|
@@ -6,11 +6,12 @@ var optimism = require('optimism');
|
|
|
6
6
|
var graphql = require('graphql');
|
|
7
7
|
var core = require('../core');
|
|
8
8
|
var utilities = require('../../utilities');
|
|
9
|
+
var caches = require('@wry/caches');
|
|
9
10
|
|
|
10
11
|
var KEEP = "__KEEP";
|
|
11
12
|
function removeTypenameFromVariables(options) {
|
|
12
13
|
if (options === void 0) { options = Object.create(null); }
|
|
13
|
-
return new core.ApolloLink(function (operation, forward) {
|
|
14
|
+
return Object.assign(new core.ApolloLink(function (operation, forward) {
|
|
14
15
|
var except = options.except;
|
|
15
16
|
var query = operation.query, variables = operation.variables;
|
|
16
17
|
if (variables) {
|
|
@@ -20,7 +21,18 @@ function removeTypenameFromVariables(options) {
|
|
|
20
21
|
: utilities.stripTypename(variables);
|
|
21
22
|
}
|
|
22
23
|
return forward(operation);
|
|
23
|
-
})
|
|
24
|
+
}), globalThis.__DEV__ !== false ?
|
|
25
|
+
{
|
|
26
|
+
getMemoryInternals: function () {
|
|
27
|
+
var _a;
|
|
28
|
+
return {
|
|
29
|
+
removeTypenameFromVariables: {
|
|
30
|
+
getVariableDefinitions: (_a = getVariableDefinitions === null || getVariableDefinitions === void 0 ? void 0 : getVariableDefinitions.size) !== null && _a !== void 0 ? _a : 0,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
: {});
|
|
24
36
|
}
|
|
25
37
|
function maybeStripTypenameUsingConfig(query, variables, config) {
|
|
26
38
|
var variableDefinitions = getVariableDefinitions(query);
|
|
@@ -67,6 +79,10 @@ var getVariableDefinitions = optimism.wrap(function (document) {
|
|
|
67
79
|
},
|
|
68
80
|
});
|
|
69
81
|
return definitions;
|
|
82
|
+
}, {
|
|
83
|
+
max: utilities.cacheSizes["removeTypenameFromVariables.getVariableDefinitions"] ||
|
|
84
|
+
2000 ,
|
|
85
|
+
cache: caches.WeakCache,
|
|
70
86
|
});
|
|
71
87
|
function unwrapType(node) {
|
|
72
88
|
switch (node.kind) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-typename.cjs","sources":["removeTypenameFromVariables.js"],"sourcesContent":["import { wrap } from \"optimism\";\nimport { Kind, visit } from \"graphql\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { stripTypename, isPlainObject } from \"../../utilities/index.js\";\nexport var KEEP = \"__KEEP\";\nexport function removeTypenameFromVariables(options) {\n if (options === void 0) { options = Object.create(null); }\n return new ApolloLink(function (operation, forward) {\n var except = options.except;\n var query = operation.query, variables = operation.variables;\n if (variables) {\n operation.variables =\n except ?\n maybeStripTypenameUsingConfig(query, variables, except)\n : stripTypename(variables);\n }\n return forward(operation);\n });\n}\nfunction maybeStripTypenameUsingConfig(query, variables, config) {\n var variableDefinitions = getVariableDefinitions(query);\n return Object.fromEntries(Object.entries(variables).map(function (keyVal) {\n var key = keyVal[0], value = keyVal[1];\n var typename = variableDefinitions[key];\n var typenameConfig = config[typename];\n keyVal[1] =\n typenameConfig ?\n maybeStripTypename(value, typenameConfig)\n : stripTypename(value);\n return keyVal;\n }));\n}\nfunction maybeStripTypename(value, config) {\n if (config === KEEP) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(function (item) { return maybeStripTypename(item, config); });\n }\n if (isPlainObject(value)) {\n var modified_1 = {};\n Object.keys(value).forEach(function (key) {\n var child = value[key];\n if (key === \"__typename\") {\n return;\n }\n var fieldConfig = config[key];\n modified_1[key] =\n fieldConfig ?\n maybeStripTypename(child, fieldConfig)\n : stripTypename(child);\n });\n return modified_1;\n }\n return value;\n}\nvar getVariableDefinitions = wrap(function (document) {\n var definitions = {};\n visit(document, {\n VariableDefinition: function (node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n return definitions;\n});\nfunction unwrapType(node) {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\n//# sourceMappingURL=removeTypenameFromVariables.js.map"],"names":["ApolloLink","stripTypename","isPlainObject","wrap","visit","Kind"],"mappings":"
|
|
1
|
+
{"version":3,"file":"remove-typename.cjs","sources":["removeTypenameFromVariables.js"],"sourcesContent":["import { wrap } from \"optimism\";\nimport { Kind, visit } from \"graphql\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { stripTypename, isPlainObject, cacheSizes, } from \"../../utilities/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nexport var KEEP = \"__KEEP\";\nexport function removeTypenameFromVariables(options) {\n if (options === void 0) { options = Object.create(null); }\n return Object.assign(new ApolloLink(function (operation, forward) {\n var except = options.except;\n var query = operation.query, variables = operation.variables;\n if (variables) {\n operation.variables =\n except ?\n maybeStripTypenameUsingConfig(query, variables, except)\n : stripTypename(variables);\n }\n return forward(operation);\n }), globalThis.__DEV__ !== false ?\n {\n getMemoryInternals: function () {\n var _a;\n return {\n removeTypenameFromVariables: {\n getVariableDefinitions: (_a = getVariableDefinitions === null || getVariableDefinitions === void 0 ? void 0 : getVariableDefinitions.size) !== null && _a !== void 0 ? _a : 0,\n },\n };\n },\n }\n : {});\n}\nfunction maybeStripTypenameUsingConfig(query, variables, config) {\n var variableDefinitions = getVariableDefinitions(query);\n return Object.fromEntries(Object.entries(variables).map(function (keyVal) {\n var key = keyVal[0], value = keyVal[1];\n var typename = variableDefinitions[key];\n var typenameConfig = config[typename];\n keyVal[1] =\n typenameConfig ?\n maybeStripTypename(value, typenameConfig)\n : stripTypename(value);\n return keyVal;\n }));\n}\nfunction maybeStripTypename(value, config) {\n if (config === KEEP) {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(function (item) { return maybeStripTypename(item, config); });\n }\n if (isPlainObject(value)) {\n var modified_1 = {};\n Object.keys(value).forEach(function (key) {\n var child = value[key];\n if (key === \"__typename\") {\n return;\n }\n var fieldConfig = config[key];\n modified_1[key] =\n fieldConfig ?\n maybeStripTypename(child, fieldConfig)\n : stripTypename(child);\n });\n return modified_1;\n }\n return value;\n}\nvar getVariableDefinitions = wrap(function (document) {\n var definitions = {};\n visit(document, {\n VariableDefinition: function (node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n return definitions;\n}, {\n max: cacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] ||\n 2000 /* defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] */,\n cache: WeakCache,\n});\nfunction unwrapType(node) {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\n//# sourceMappingURL=removeTypenameFromVariables.js.map"],"names":["ApolloLink","stripTypename","isPlainObject","wrap","visit","cacheSizes","WeakCache","Kind"],"mappings":"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"}
|
|
@@ -6,11 +6,12 @@ var optimism = require('optimism');
|
|
|
6
6
|
var graphql = require('graphql');
|
|
7
7
|
var core = require('../core');
|
|
8
8
|
var utilities = require('../../utilities');
|
|
9
|
+
var caches = require('@wry/caches');
|
|
9
10
|
|
|
10
11
|
var KEEP = "__KEEP";
|
|
11
12
|
function removeTypenameFromVariables(options) {
|
|
12
13
|
if (options === void 0) { options = Object.create(null); }
|
|
13
|
-
return new core.ApolloLink(function (operation, forward) {
|
|
14
|
+
return Object.assign(new core.ApolloLink(function (operation, forward) {
|
|
14
15
|
var except = options.except;
|
|
15
16
|
var query = operation.query, variables = operation.variables;
|
|
16
17
|
if (variables) {
|
|
@@ -20,7 +21,18 @@ function removeTypenameFromVariables(options) {
|
|
|
20
21
|
: utilities.stripTypename(variables);
|
|
21
22
|
}
|
|
22
23
|
return forward(operation);
|
|
23
|
-
})
|
|
24
|
+
}), globalThis.__DEV__ !== false ?
|
|
25
|
+
{
|
|
26
|
+
getMemoryInternals: function () {
|
|
27
|
+
var _a;
|
|
28
|
+
return {
|
|
29
|
+
removeTypenameFromVariables: {
|
|
30
|
+
getVariableDefinitions: (_a = getVariableDefinitions === null || getVariableDefinitions === void 0 ? void 0 : getVariableDefinitions.size) !== null && _a !== void 0 ? _a : 0,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
: {});
|
|
24
36
|
}
|
|
25
37
|
function maybeStripTypenameUsingConfig(query, variables, config) {
|
|
26
38
|
var variableDefinitions = getVariableDefinitions(query);
|
|
@@ -67,6 +79,10 @@ var getVariableDefinitions = optimism.wrap(function (document) {
|
|
|
67
79
|
},
|
|
68
80
|
});
|
|
69
81
|
return definitions;
|
|
82
|
+
}, {
|
|
83
|
+
max: utilities.cacheSizes["removeTypenameFromVariables.getVariableDefinitions"] ||
|
|
84
|
+
2000 ,
|
|
85
|
+
cache: caches.WeakCache,
|
|
70
86
|
});
|
|
71
87
|
function unwrapType(node) {
|
|
72
88
|
switch (node.kind) {
|
|
@@ -6,6 +6,14 @@ interface KeepTypenameConfig {
|
|
|
6
6
|
export interface RemoveTypenameFromVariablesOptions {
|
|
7
7
|
except?: KeepTypenameConfig;
|
|
8
8
|
}
|
|
9
|
-
export declare function removeTypenameFromVariables(options?: RemoveTypenameFromVariablesOptions): ApolloLink
|
|
9
|
+
export declare function removeTypenameFromVariables(options?: RemoveTypenameFromVariablesOptions): ApolloLink & ({
|
|
10
|
+
getMemoryInternals(): {
|
|
11
|
+
removeTypenameFromVariables: {
|
|
12
|
+
getVariableDefinitions: number;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
getMemoryInternals?: undefined;
|
|
17
|
+
});
|
|
10
18
|
export {};
|
|
11
19
|
//# sourceMappingURL=removeTypenameFromVariables.d.ts.map
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { wrap } from "optimism";
|
|
2
2
|
import { Kind, visit } from "graphql";
|
|
3
3
|
import { ApolloLink } from "../core/index.js";
|
|
4
|
-
import { stripTypename, isPlainObject } from "../../utilities/index.js";
|
|
4
|
+
import { stripTypename, isPlainObject, cacheSizes, } from "../../utilities/index.js";
|
|
5
|
+
import { WeakCache } from "@wry/caches";
|
|
5
6
|
export var KEEP = "__KEEP";
|
|
6
7
|
export function removeTypenameFromVariables(options) {
|
|
7
8
|
if (options === void 0) { options = Object.create(null); }
|
|
8
|
-
return new ApolloLink(function (operation, forward) {
|
|
9
|
+
return Object.assign(new ApolloLink(function (operation, forward) {
|
|
9
10
|
var except = options.except;
|
|
10
11
|
var query = operation.query, variables = operation.variables;
|
|
11
12
|
if (variables) {
|
|
@@ -15,7 +16,18 @@ export function removeTypenameFromVariables(options) {
|
|
|
15
16
|
: stripTypename(variables);
|
|
16
17
|
}
|
|
17
18
|
return forward(operation);
|
|
18
|
-
})
|
|
19
|
+
}), globalThis.__DEV__ !== false ?
|
|
20
|
+
{
|
|
21
|
+
getMemoryInternals: function () {
|
|
22
|
+
var _a;
|
|
23
|
+
return {
|
|
24
|
+
removeTypenameFromVariables: {
|
|
25
|
+
getVariableDefinitions: (_a = getVariableDefinitions === null || getVariableDefinitions === void 0 ? void 0 : getVariableDefinitions.size) !== null && _a !== void 0 ? _a : 0,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
}
|
|
30
|
+
: {});
|
|
19
31
|
}
|
|
20
32
|
function maybeStripTypenameUsingConfig(query, variables, config) {
|
|
21
33
|
var variableDefinitions = getVariableDefinitions(query);
|
|
@@ -62,6 +74,10 @@ var getVariableDefinitions = wrap(function (document) {
|
|
|
62
74
|
},
|
|
63
75
|
});
|
|
64
76
|
return definitions;
|
|
77
|
+
}, {
|
|
78
|
+
max: cacheSizes["removeTypenameFromVariables.getVariableDefinitions"] ||
|
|
79
|
+
2000 /* defaultCacheSizes["removeTypenameFromVariables.getVariableDefinitions"] */,
|
|
80
|
+
cache: WeakCache,
|
|
65
81
|
});
|
|
66
82
|
function unwrapType(node) {
|
|
67
83
|
switch (node.kind) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeTypenameFromVariables.js","sourceRoot":"","sources":["../../../src/link/remove-typename/removeTypenameFromVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"removeTypenameFromVariables.js","sourceRoot":"","sources":["../../../src/link/remove-typename/removeTypenameFromVariables.ts"],"names":[],"mappings":"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","sourcesContent":["import { wrap } from \"optimism\";\nimport type { DocumentNode, TypeNode } from \"graphql\";\nimport { Kind, visit } from \"graphql\";\nimport { ApolloLink } from \"../core/index.js\";\nimport {\n stripTypename,\n isPlainObject,\n cacheSizes,\n defaultCacheSizes,\n} from \"../../utilities/index.js\";\nimport type { OperationVariables } from \"../../core/index.js\";\nimport { WeakCache } from \"@wry/caches\";\n\nexport const KEEP = \"__KEEP\";\n\ninterface KeepTypenameConfig {\n [key: string]: typeof KEEP | KeepTypenameConfig;\n}\n\nexport interface RemoveTypenameFromVariablesOptions {\n except?: KeepTypenameConfig;\n}\n\nexport function removeTypenameFromVariables(\n options: RemoveTypenameFromVariablesOptions = Object.create(null)\n) {\n return Object.assign(\n new ApolloLink((operation, forward) => {\n const { except } = options;\n const { query, variables } = operation;\n\n if (variables) {\n operation.variables =\n except ?\n maybeStripTypenameUsingConfig(query, variables, except)\n : stripTypename(variables);\n }\n\n return forward(operation);\n }),\n __DEV__ ?\n {\n getMemoryInternals() {\n return {\n removeTypenameFromVariables: {\n getVariableDefinitions: getVariableDefinitions?.size ?? 0,\n },\n };\n },\n }\n : {}\n );\n}\n\nfunction maybeStripTypenameUsingConfig(\n query: DocumentNode,\n variables: OperationVariables,\n config: KeepTypenameConfig\n) {\n const variableDefinitions = getVariableDefinitions(query);\n\n return Object.fromEntries(\n Object.entries(variables).map((keyVal) => {\n const [key, value] = keyVal;\n const typename = variableDefinitions[key];\n const typenameConfig = config[typename];\n\n keyVal[1] =\n typenameConfig ?\n maybeStripTypename(value, typenameConfig)\n : stripTypename(value);\n\n return keyVal;\n })\n );\n}\n\ntype JSONPrimitive = string | number | null | boolean;\ntype JSONValue = JSONPrimitive | JSONValue[] | { [key: string]: JSONValue };\n\nfunction maybeStripTypename(\n value: JSONValue,\n config: KeepTypenameConfig[string]\n): JSONValue {\n if (config === KEEP) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => maybeStripTypename(item, config));\n }\n\n if (isPlainObject(value)) {\n const modified: Record<string, any> = {};\n\n Object.keys(value).forEach((key) => {\n const child = value[key];\n\n if (key === \"__typename\") {\n return;\n }\n\n const fieldConfig = config[key];\n\n modified[key] =\n fieldConfig ?\n maybeStripTypename(child, fieldConfig)\n : stripTypename(child);\n });\n\n return modified;\n }\n\n return value;\n}\n\nconst getVariableDefinitions = wrap(\n (document: DocumentNode) => {\n const definitions: Record<string, string> = {};\n\n visit(document, {\n VariableDefinition(node) {\n definitions[node.variable.name.value] = unwrapType(node.type);\n },\n });\n\n return definitions;\n },\n {\n max:\n cacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] ||\n defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"],\n cache: WeakCache,\n }\n);\n\nfunction unwrapType(node: TypeNode): string {\n switch (node.kind) {\n case Kind.NON_NULL_TYPE:\n return unwrapType(node.type);\n case Kind.LIST_TYPE:\n return unwrapType(node.type);\n case Kind.NAMED_TYPE:\n return node.name.value;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apollo/client",
|
|
3
|
-
"version": "3.9.0-
|
|
3
|
+
"version": "3.9.0-beta.0",
|
|
4
4
|
"description": "A fully-featured caching GraphQL client.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"keywords": [
|
|
@@ -67,15 +67,15 @@
|
|
|
67
67
|
"zen-observable-ts": "^1.2.5"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
|
-
"@arethetypeswrong/cli": "0.13.
|
|
70
|
+
"@arethetypeswrong/cli": "0.13.3",
|
|
71
71
|
"@babel/parser": "7.23.5",
|
|
72
|
-
"@changesets/changelog-github": "0.
|
|
73
|
-
"@changesets/cli": "2.
|
|
72
|
+
"@changesets/changelog-github": "0.5.0",
|
|
73
|
+
"@changesets/cli": "2.27.1",
|
|
74
74
|
"@graphql-tools/schema": "10.0.2",
|
|
75
|
-
"@microsoft/api-extractor": "7.38.
|
|
75
|
+
"@microsoft/api-extractor": "7.38.5",
|
|
76
76
|
"@rollup/plugin-node-resolve": "11.2.1",
|
|
77
|
-
"@size-limit/esbuild-why": "11.0.
|
|
78
|
-
"@size-limit/preset-small-lib": "11.0.
|
|
77
|
+
"@size-limit/esbuild-why": "11.0.1",
|
|
78
|
+
"@size-limit/preset-small-lib": "11.0.1",
|
|
79
79
|
"@testing-library/jest-dom": "6.1.5",
|
|
80
80
|
"@testing-library/react": "14.1.2",
|
|
81
81
|
"@testing-library/react-12": "npm:@testing-library/react@^12",
|
|
@@ -85,24 +85,24 @@
|
|
|
85
85
|
"@types/fetch-mock": "7.3.8",
|
|
86
86
|
"@types/glob": "8.1.0",
|
|
87
87
|
"@types/hoist-non-react-statics": "3.3.5",
|
|
88
|
-
"@types/jest": "29.5.
|
|
88
|
+
"@types/jest": "29.5.11",
|
|
89
89
|
"@types/lodash": "4.14.202",
|
|
90
|
-
"@types/node": "20.10.
|
|
90
|
+
"@types/node": "20.10.4",
|
|
91
91
|
"@types/node-fetch": "2.6.9",
|
|
92
|
-
"@types/react": "18.2.
|
|
92
|
+
"@types/react": "18.2.43",
|
|
93
93
|
"@types/react-dom": "18.2.17",
|
|
94
94
|
"@types/relay-runtime": "14.1.14",
|
|
95
95
|
"@types/use-sync-external-store": "0.0.6",
|
|
96
|
-
"@typescript-eslint/eslint-plugin": "6.
|
|
97
|
-
"@typescript-eslint/parser": "6.
|
|
98
|
-
"@typescript-eslint/rule-tester": "6.
|
|
99
|
-
"@typescript-eslint/types": "6.
|
|
100
|
-
"@typescript-eslint/utils": "6.
|
|
96
|
+
"@typescript-eslint/eslint-plugin": "6.14.0",
|
|
97
|
+
"@typescript-eslint/parser": "6.14.0",
|
|
98
|
+
"@typescript-eslint/rule-tester": "6.14.0",
|
|
99
|
+
"@typescript-eslint/types": "6.14.0",
|
|
100
|
+
"@typescript-eslint/utils": "6.14.0",
|
|
101
101
|
"acorn": "8.11.2",
|
|
102
102
|
"blob-polyfill": "7.0.20220408",
|
|
103
103
|
"bytes": "3.1.2",
|
|
104
104
|
"cross-fetch": "4.0.0",
|
|
105
|
-
"eslint": "8.
|
|
105
|
+
"eslint": "8.56.0",
|
|
106
106
|
"eslint-import-resolver-typescript": "3.6.1",
|
|
107
107
|
"eslint-plugin-import": "npm:@phryneas/eslint-plugin-import@2.27.5-pr.2813.2817.199971c",
|
|
108
108
|
"eslint-plugin-local-rules": "2.0.1",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"jest-junit": "16.0.0",
|
|
118
118
|
"lodash": "4.17.21",
|
|
119
119
|
"patch-package": "8.0.0",
|
|
120
|
-
"prettier": "3.1.
|
|
120
|
+
"prettier": "3.1.1",
|
|
121
121
|
"react": "18.2.0",
|
|
122
122
|
"react-17": "npm:react@^17",
|
|
123
123
|
"react-dom": "18.2.0",
|
|
@@ -130,16 +130,16 @@
|
|
|
130
130
|
"rollup-plugin-cleanup": "3.2.1",
|
|
131
131
|
"rollup-plugin-terser": "7.0.2",
|
|
132
132
|
"rxjs": "7.8.1",
|
|
133
|
-
"size-limit": "11.0.
|
|
133
|
+
"size-limit": "11.0.1",
|
|
134
134
|
"subscriptions-transport-ws": "0.11.0",
|
|
135
|
-
"terser": "5.
|
|
135
|
+
"terser": "5.26.0",
|
|
136
136
|
"ts-api-utils": "1.0.3",
|
|
137
137
|
"ts-jest": "29.1.1",
|
|
138
138
|
"ts-jest-resolver": "2.0.1",
|
|
139
139
|
"ts-morph": "20.0.0",
|
|
140
|
-
"ts-node": "10.9.
|
|
140
|
+
"ts-node": "10.9.2",
|
|
141
141
|
"typedoc": "0.25.0",
|
|
142
|
-
"typescript": "5.3.
|
|
142
|
+
"typescript": "5.3.3",
|
|
143
143
|
"wait-for-observables": "1.0.3",
|
|
144
144
|
"web-streams-polyfill": "3.2.1",
|
|
145
145
|
"whatwg-fetch": "3.6.19"
|
|
@@ -11,16 +11,18 @@ declare const PROMISE_SYMBOL: unique symbol;
|
|
|
11
11
|
* A child component reading the `QueryReference` via {@link useReadQuery} will
|
|
12
12
|
* suspend until the promise resolves.
|
|
13
13
|
*/
|
|
14
|
-
export interface QueryReference<TData = unknown> {
|
|
14
|
+
export interface QueryReference<TData = unknown, TVariables = unknown> {
|
|
15
15
|
readonly [QUERY_REFERENCE_SYMBOL]: InternalQueryReference<TData>;
|
|
16
16
|
[PROMISE_SYMBOL]: QueryRefPromise<TData>;
|
|
17
|
+
toPromise(): Promise<QueryReference<TData, TVariables>>;
|
|
17
18
|
}
|
|
18
19
|
interface InternalQueryReferenceOptions {
|
|
19
20
|
onDispose?: () => void;
|
|
20
21
|
autoDisposeTimeoutMs?: number;
|
|
21
22
|
}
|
|
22
|
-
export declare function wrapQueryRef<TData>(internalQueryRef: InternalQueryReference<TData>): QueryReference<TData>;
|
|
23
|
-
export declare function
|
|
23
|
+
export declare function wrapQueryRef<TData, TVariables extends OperationVariables>(internalQueryRef: InternalQueryReference<TData>): QueryReference<TData, TVariables>;
|
|
24
|
+
export declare function getWrappedPromise<TData>(queryRef: QueryReference<TData, any>): QueryRefPromise<TData>;
|
|
25
|
+
export declare function unwrapQueryRef<TData>(queryRef: QueryReference<TData>): InternalQueryReference<TData>;
|
|
24
26
|
export declare function updateWrappedQueryRef<TData>(queryRef: QueryReference<TData>, promise: QueryRefPromise<TData>): void;
|
|
25
27
|
declare const OBSERVED_CHANGED_OPTIONS: readonly ["canonizeResults", "context", "errorPolicy", "fetchPolicy", "refetchWritePolicy", "returnPartialData"];
|
|
26
28
|
type ObservedOptions = Pick<WatchQueryOptions, (typeof OBSERVED_CHANGED_OPTIONS)[number]>;
|
|
@@ -32,12 +34,13 @@ export declare class InternalQueryReference<TData = unknown> {
|
|
|
32
34
|
private subscription;
|
|
33
35
|
private listeners;
|
|
34
36
|
private autoDisposeTimeoutId?;
|
|
35
|
-
private status;
|
|
36
37
|
private resolve;
|
|
37
38
|
private reject;
|
|
38
39
|
private references;
|
|
39
|
-
constructor(observable: ObservableQuery<TData>, options: InternalQueryReferenceOptions);
|
|
40
|
+
constructor(observable: ObservableQuery<TData, any>, options: InternalQueryReferenceOptions);
|
|
41
|
+
get disposed(): boolean;
|
|
40
42
|
get watchQueryOptions(): WatchQueryOptions<OperationVariables, TData>;
|
|
43
|
+
reinitialize(): void;
|
|
41
44
|
retain(): () => void;
|
|
42
45
|
didChangeOptions(watchQueryOptions: ObservedOptions): boolean;
|
|
43
46
|
applyOptions(watchQueryOptions: ObservedOptions): QueryRefPromise<TData>;
|
|
@@ -50,6 +53,9 @@ export declare class InternalQueryReference<TData = unknown> {
|
|
|
50
53
|
private handleError;
|
|
51
54
|
private deliver;
|
|
52
55
|
private initiateFetch;
|
|
56
|
+
private subscribeToQuery;
|
|
57
|
+
private setResult;
|
|
58
|
+
private createPendingPromise;
|
|
53
59
|
}
|
|
54
60
|
export {};
|
|
55
61
|
//# sourceMappingURL=QueryReference.d.ts.map
|
|
@@ -1,30 +1,40 @@
|
|
|
1
1
|
import { __assign } from "tslib";
|
|
2
2
|
import { equal } from "@wry/equality";
|
|
3
|
-
import { isNetworkRequestSettled } from "../../core/index.js";
|
|
4
3
|
import { createFulfilledPromise, createRejectedPromise, } from "../../utilities/index.js";
|
|
5
4
|
import { wrapPromiseWithState } from "../../utilities/index.js";
|
|
6
5
|
var QUERY_REFERENCE_SYMBOL = Symbol();
|
|
7
6
|
var PROMISE_SYMBOL = Symbol();
|
|
8
7
|
export function wrapQueryRef(internalQueryRef) {
|
|
9
8
|
var _a;
|
|
10
|
-
|
|
9
|
+
var ref = (_a = {
|
|
10
|
+
toPromise: function () {
|
|
11
|
+
// We avoid resolving this promise with the query data because we want to
|
|
12
|
+
// discourage using the server data directly from the queryRef. Instead,
|
|
13
|
+
// the data should be accessed through `useReadQuery`. When the server
|
|
14
|
+
// data is needed, its better to use `client.query()` directly.
|
|
15
|
+
//
|
|
16
|
+
// Here we resolve with the ref itself to make using this in React Router
|
|
17
|
+
// or TanStack Router `loader` functions a bit more ergonomic e.g.
|
|
18
|
+
//
|
|
19
|
+
// function loader() {
|
|
20
|
+
// return { queryRef: await preloadQuery(query).toPromise() }
|
|
21
|
+
// }
|
|
22
|
+
return getWrappedPromise(ref).then(function () { return ref; });
|
|
23
|
+
}
|
|
24
|
+
},
|
|
11
25
|
_a[QUERY_REFERENCE_SYMBOL] = internalQueryRef,
|
|
12
26
|
_a[PROMISE_SYMBOL] = internalQueryRef.promise,
|
|
13
|
-
_a;
|
|
27
|
+
_a);
|
|
28
|
+
return ref;
|
|
29
|
+
}
|
|
30
|
+
export function getWrappedPromise(queryRef) {
|
|
31
|
+
var internalQueryRef = unwrapQueryRef(queryRef);
|
|
32
|
+
return internalQueryRef.promise.status === "fulfilled" ?
|
|
33
|
+
internalQueryRef.promise
|
|
34
|
+
: queryRef[PROMISE_SYMBOL];
|
|
14
35
|
}
|
|
15
36
|
export function unwrapQueryRef(queryRef) {
|
|
16
|
-
|
|
17
|
-
return [
|
|
18
|
-
internalQueryRef,
|
|
19
|
-
function () {
|
|
20
|
-
// There is a chance the query ref's promise has been updated in the time
|
|
21
|
-
// the original promise had been suspended. In that case, we want to use
|
|
22
|
-
// it instead of the older promise which may contain outdated data.
|
|
23
|
-
return internalQueryRef.promise.status === "fulfilled" ?
|
|
24
|
-
internalQueryRef.promise
|
|
25
|
-
: queryRef[PROMISE_SYMBOL];
|
|
26
|
-
},
|
|
27
|
-
];
|
|
37
|
+
return queryRef[QUERY_REFERENCE_SYMBOL];
|
|
28
38
|
}
|
|
29
39
|
export function updateWrappedQueryRef(queryRef, promise) {
|
|
30
40
|
queryRef[PROMISE_SYMBOL] = promise;
|
|
@@ -42,39 +52,16 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
42
52
|
var _this = this;
|
|
43
53
|
this.key = {};
|
|
44
54
|
this.listeners = new Set();
|
|
45
|
-
this.status = "loading";
|
|
46
55
|
this.references = 0;
|
|
47
56
|
this.handleNext = this.handleNext.bind(this);
|
|
48
57
|
this.handleError = this.handleError.bind(this);
|
|
49
58
|
this.dispose = this.dispose.bind(this);
|
|
50
59
|
this.observable = observable;
|
|
51
|
-
// Don't save this result as last result to prevent delivery of last result
|
|
52
|
-
// when first subscribing
|
|
53
|
-
this.result = observable.getCurrentResult(false);
|
|
54
60
|
if (options.onDispose) {
|
|
55
61
|
this.onDispose = options.onDispose;
|
|
56
62
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
(!this.result.partial || this.watchQueryOptions.returnPartialData))) {
|
|
60
|
-
this.promise = createFulfilledPromise(this.result);
|
|
61
|
-
this.status = "idle";
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this.promise = wrapPromiseWithState(new Promise(function (resolve, reject) {
|
|
65
|
-
_this.resolve = resolve;
|
|
66
|
-
_this.reject = reject;
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
this.subscription = observable
|
|
70
|
-
.filter(function (_a) {
|
|
71
|
-
var data = _a.data;
|
|
72
|
-
return !equal(data, {});
|
|
73
|
-
})
|
|
74
|
-
.subscribe({
|
|
75
|
-
next: this.handleNext,
|
|
76
|
-
error: this.handleError,
|
|
77
|
-
});
|
|
63
|
+
this.setResult();
|
|
64
|
+
this.subscribeToQuery();
|
|
78
65
|
// Start a timer that will automatically dispose of the query if the
|
|
79
66
|
// suspended resource does not use this queryRef in the given time. This
|
|
80
67
|
// helps prevent memory leaks when a component has unmounted before the
|
|
@@ -90,6 +77,13 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
90
77
|
// promise in a pending state rendering the suspense boundary indefinitely.
|
|
91
78
|
this.promise.then(startDisposeTimer, startDisposeTimer);
|
|
92
79
|
}
|
|
80
|
+
Object.defineProperty(InternalQueryReference.prototype, "disposed", {
|
|
81
|
+
get: function () {
|
|
82
|
+
return this.subscription.closed;
|
|
83
|
+
},
|
|
84
|
+
enumerable: false,
|
|
85
|
+
configurable: true
|
|
86
|
+
});
|
|
93
87
|
Object.defineProperty(InternalQueryReference.prototype, "watchQueryOptions", {
|
|
94
88
|
get: function () {
|
|
95
89
|
return this.observable.options;
|
|
@@ -97,6 +91,28 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
97
91
|
enumerable: false,
|
|
98
92
|
configurable: true
|
|
99
93
|
});
|
|
94
|
+
InternalQueryReference.prototype.reinitialize = function () {
|
|
95
|
+
var observable = this.observable;
|
|
96
|
+
var originalFetchPolicy = this.watchQueryOptions.fetchPolicy;
|
|
97
|
+
try {
|
|
98
|
+
if (originalFetchPolicy !== "no-cache") {
|
|
99
|
+
observable.resetLastResults();
|
|
100
|
+
observable.silentSetOptions({ fetchPolicy: "cache-first" });
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
observable.silentSetOptions({ fetchPolicy: "standby" });
|
|
104
|
+
}
|
|
105
|
+
this.subscribeToQuery();
|
|
106
|
+
if (originalFetchPolicy === "no-cache") {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
observable.resetDiff();
|
|
110
|
+
this.setResult();
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });
|
|
114
|
+
}
|
|
115
|
+
};
|
|
100
116
|
InternalQueryReference.prototype.retain = function () {
|
|
101
117
|
var _this = this;
|
|
102
118
|
this.references++;
|
|
@@ -161,19 +177,18 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
161
177
|
};
|
|
162
178
|
InternalQueryReference.prototype.handleNext = function (result) {
|
|
163
179
|
var _a;
|
|
164
|
-
switch (this.status) {
|
|
165
|
-
case "
|
|
180
|
+
switch (this.promise.status) {
|
|
181
|
+
case "pending": {
|
|
166
182
|
// Maintain the last successful `data` value if the next result does not
|
|
167
183
|
// have one.
|
|
168
184
|
if (result.data === void 0) {
|
|
169
185
|
result.data = this.result.data;
|
|
170
186
|
}
|
|
171
|
-
this.status = "idle";
|
|
172
187
|
this.result = result;
|
|
173
188
|
(_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, result);
|
|
174
189
|
break;
|
|
175
190
|
}
|
|
176
|
-
|
|
191
|
+
default: {
|
|
177
192
|
// This occurs when switching to a result that is fully cached when this
|
|
178
193
|
// class is instantiated. ObservableQuery will run reobserve when
|
|
179
194
|
// subscribing, which delivers a result from the cache.
|
|
@@ -196,13 +211,12 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
196
211
|
var _a;
|
|
197
212
|
this.subscription.unsubscribe();
|
|
198
213
|
this.subscription = this.observable.resubscribeAfterError(this.handleNext, this.handleError);
|
|
199
|
-
switch (this.status) {
|
|
200
|
-
case "
|
|
201
|
-
this.status = "idle";
|
|
214
|
+
switch (this.promise.status) {
|
|
215
|
+
case "pending": {
|
|
202
216
|
(_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, error);
|
|
203
217
|
break;
|
|
204
218
|
}
|
|
205
|
-
|
|
219
|
+
default: {
|
|
206
220
|
this.promise = createRejectedPromise(error);
|
|
207
221
|
this.deliver(this.promise);
|
|
208
222
|
}
|
|
@@ -213,11 +227,7 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
213
227
|
};
|
|
214
228
|
InternalQueryReference.prototype.initiateFetch = function (returnedPromise) {
|
|
215
229
|
var _this = this;
|
|
216
|
-
this.
|
|
217
|
-
this.promise = wrapPromiseWithState(new Promise(function (resolve, reject) {
|
|
218
|
-
_this.resolve = resolve;
|
|
219
|
-
_this.reject = reject;
|
|
220
|
-
}));
|
|
230
|
+
this.promise = this.createPendingPromise();
|
|
221
231
|
this.promise.catch(function () { });
|
|
222
232
|
// If the data returned from the fetch is deeply equal to the data already
|
|
223
233
|
// in the cache, `handleNext` will not be triggered leaving the promise we
|
|
@@ -227,8 +237,7 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
227
237
|
returnedPromise
|
|
228
238
|
.then(function (result) {
|
|
229
239
|
var _a;
|
|
230
|
-
if (_this.status === "
|
|
231
|
-
_this.status = "idle";
|
|
240
|
+
if (_this.promise.status === "pending") {
|
|
232
241
|
_this.result = result;
|
|
233
242
|
(_a = _this.resolve) === null || _a === void 0 ? void 0 : _a.call(_this, result);
|
|
234
243
|
}
|
|
@@ -236,6 +245,33 @@ var InternalQueryReference = /** @class */ (function () {
|
|
|
236
245
|
.catch(function () { });
|
|
237
246
|
return returnedPromise;
|
|
238
247
|
};
|
|
248
|
+
InternalQueryReference.prototype.subscribeToQuery = function () {
|
|
249
|
+
var _this = this;
|
|
250
|
+
this.subscription = this.observable
|
|
251
|
+
.filter(function (result) { return !equal(result.data, {}) && !equal(result, _this.result); })
|
|
252
|
+
.subscribe(this.handleNext, this.handleError);
|
|
253
|
+
};
|
|
254
|
+
InternalQueryReference.prototype.setResult = function () {
|
|
255
|
+
// Don't save this result as last result to prevent delivery of last result
|
|
256
|
+
// when first subscribing
|
|
257
|
+
var result = this.observable.getCurrentResult(false);
|
|
258
|
+
if (equal(result, this.result)) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
this.result = result;
|
|
262
|
+
this.promise =
|
|
263
|
+
(result.data &&
|
|
264
|
+
(!result.partial || this.watchQueryOptions.returnPartialData)) ?
|
|
265
|
+
createFulfilledPromise(result)
|
|
266
|
+
: this.createPendingPromise();
|
|
267
|
+
};
|
|
268
|
+
InternalQueryReference.prototype.createPendingPromise = function () {
|
|
269
|
+
var _this = this;
|
|
270
|
+
return wrapPromiseWithState(new Promise(function (resolve, reject) {
|
|
271
|
+
_this.resolve = resolve;
|
|
272
|
+
_this.reject = reject;
|
|
273
|
+
}));
|
|
274
|
+
};
|
|
239
275
|
return InternalQueryReference;
|
|
240
276
|
}());
|
|
241
277
|
export { InternalQueryReference };
|