@apollo/client 3.10.3 → 3.10.5
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/CHANGELOG.md +59 -0
- package/apollo-client.cjs +166 -134
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/cache.cjs +81 -8
- package/cache/cache.cjs.map +1 -1
- package/cache/cache.cjs.native.js +81 -8
- package/cache/core/cache.js +8 -4
- package/cache/core/cache.js.map +1 -1
- package/core/ApolloClient.js +2 -1
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.js +1 -1
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.js +7 -11
- package/core/QueryInfo.js.map +1 -1
- package/core/core.cjs +5 -7
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +5 -7
- package/dev/dev.cjs +32 -27
- package/dev/dev.cjs.map +1 -1
- package/dev/dev.cjs.native.js +32 -27
- package/invariantErrorCodes.js +32 -26
- package/link/batch-http/batch-http.cjs +6 -5
- package/link/batch-http/batch-http.cjs.map +1 -1
- package/link/batch-http/batch-http.cjs.native.js +6 -5
- package/link/batch-http/batchHttpLink.js +15 -10
- package/link/batch-http/batchHttpLink.js.map +1 -1
- package/link/error/error.cjs +3 -2
- package/link/error/error.cjs.map +1 -1
- package/link/error/error.cjs.native.js +3 -2
- package/link/error/index.js +3 -2
- package/link/error/index.js.map +1 -1
- package/package.json +10 -6
- package/react/hooks/hooks.cjs +62 -34
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +62 -34
- package/react/hooks/internal/useRenderGuard.js +37 -12
- package/react/hooks/internal/useRenderGuard.js.map +1 -1
- package/react/hooks/useBackgroundQuery.d.ts +10 -13
- package/react/hooks/useBackgroundQuery.js.map +1 -1
- package/react/hooks/useLazyQuery.js +7 -8
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useLoadableQuery.d.ts +3 -3
- package/react/hooks/useLoadableQuery.js +11 -3
- package/react/hooks/useLoadableQuery.js.map +1 -1
- package/react/hooks/useMutation.js +10 -7
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.d.ts +2 -2
- package/react/hooks/useQuery.js +26 -12
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useQueryRefHandlers.d.ts +3 -3
- package/react/hooks/useQueryRefHandlers.js +7 -2
- package/react/hooks/useQueryRefHandlers.js.map +1 -1
- package/react/hooks/useReadQuery.d.ts +2 -2
- package/react/hooks/useReadQuery.js +7 -2
- package/react/hooks/useReadQuery.js.map +1 -1
- package/react/hooks/useSubscription.js +4 -0
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/hooks/useSuspenseQuery.js +2 -2
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- package/react/hooks/useSyncExternalStore.js +4 -0
- package/react/hooks/useSyncExternalStore.js.map +1 -1
- package/react/internal/cache/QueryReference.d.ts +68 -6
- package/react/internal/cache/QueryReference.js +4 -0
- package/react/internal/cache/QueryReference.js.map +1 -1
- package/react/internal/index.d.ts +2 -2
- package/react/internal/index.js +1 -1
- package/react/internal/index.js.map +1 -1
- package/react/internal/internal.cjs +92 -0
- package/react/internal/internal.cjs.map +1 -1
- package/react/internal/internal.cjs.native.js +92 -0
- 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/query-preloader/createQueryPreloader.d.ts +6 -6
- package/react/query-preloader/createQueryPreloader.js.map +1 -1
- package/react/types/types.d.ts +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/core.cjs +4 -4
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +4 -4
- package/testing/core/mocking/mockLink.d.ts +8 -3
- package/testing/core/mocking/mockLink.js +5 -5
- package/testing/core/mocking/mockLink.js.map +1 -1
- package/testing/internal/profile/profile.js +6 -2
- package/testing/internal/profile/profile.js.map +1 -1
- package/testing/matchers/toBeDisposed.js +4 -13
- package/testing/matchers/toBeDisposed.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.js +1 -1
- package/utilities/graphql/directives.js +4 -4
- package/utilities/graphql/fragments.js +3 -3
- package/utilities/graphql/getFromAST.js +8 -8
- package/utilities/graphql/storeUtils.js +1 -1
- package/utilities/graphql/transform.js +2 -2
- package/utilities/utilities.cjs +19 -19
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +19 -19
- package/version.js +1 -1
package/invariantErrorCodes.js
CHANGED
|
@@ -230,6 +230,12 @@ export const errorCodes = // This file is used by the error message display webs
|
|
|
230
230
|
},
|
|
231
231
|
|
|
232
232
|
59: {
|
|
233
|
+
file: "@apollo/client/react/internal/cache/QueryReference.js",
|
|
234
|
+
condition: "!queryRef || QUERY_REFERENCE_SYMBOL in queryRef",
|
|
235
|
+
message: "Expected a QueryRef object, but got something else instead."
|
|
236
|
+
},
|
|
237
|
+
|
|
238
|
+
60: {
|
|
233
239
|
file: "@apollo/client/react/parser/index.js",
|
|
234
240
|
condition: "!!document && !!document.kind",
|
|
235
241
|
|
|
@@ -238,7 +244,7 @@ export const errorCodes = // This file is used by the error message display webs
|
|
|
238
244
|
"to convert your operation into a document"
|
|
239
245
|
},
|
|
240
246
|
|
|
241
|
-
|
|
247
|
+
61: {
|
|
242
248
|
file: "@apollo/client/react/parser/index.js",
|
|
243
249
|
condition: "!fragments.length ||\n queries.length ||\n mutations.length ||\n subscriptions.length",
|
|
244
250
|
|
|
@@ -246,7 +252,7 @@ export const errorCodes = // This file is used by the error message display webs
|
|
|
246
252
|
"You must include a query, subscription or mutation as well"
|
|
247
253
|
},
|
|
248
254
|
|
|
249
|
-
|
|
255
|
+
62: {
|
|
250
256
|
file: "@apollo/client/react/parser/index.js",
|
|
251
257
|
condition: "queries.length + mutations.length + subscriptions.length <= 1",
|
|
252
258
|
|
|
@@ -256,7 +262,7 @@ export const errorCodes = // This file is used by the error message display webs
|
|
|
256
262
|
"You can use 'compose' to join multiple operation types to a component"
|
|
257
263
|
},
|
|
258
264
|
|
|
259
|
-
|
|
265
|
+
63: {
|
|
260
266
|
file: "@apollo/client/react/parser/index.js",
|
|
261
267
|
condition: "definitions.length === 1",
|
|
262
268
|
|
|
@@ -265,120 +271,120 @@ export const errorCodes = // This file is used by the error message display webs
|
|
|
265
271
|
"You can use 'compose' to join multiple operation types to a component"
|
|
266
272
|
},
|
|
267
273
|
|
|
268
|
-
|
|
274
|
+
64: {
|
|
269
275
|
file: "@apollo/client/react/parser/index.js",
|
|
270
276
|
condition: "operation.type === type",
|
|
271
277
|
message: "Running a %s requires a graphql " + "%s, but a %s was used instead."
|
|
272
278
|
},
|
|
273
279
|
|
|
274
|
-
|
|
280
|
+
65: {
|
|
275
281
|
file: "@apollo/client/testing/core/mocking/mockLink.js",
|
|
276
|
-
condition: "
|
|
282
|
+
condition: "queryWithoutClientOnlyDirectives",
|
|
277
283
|
message: "query is required"
|
|
278
284
|
},
|
|
279
285
|
|
|
280
|
-
|
|
286
|
+
66: {
|
|
281
287
|
file: "@apollo/client/testing/core/mocking/mockLink.js",
|
|
282
288
|
condition: "mockedResponse.maxUsageCount > 0",
|
|
283
289
|
message: "Mock response maxUsageCount must be greater than 0, %s given"
|
|
284
290
|
},
|
|
285
291
|
|
|
286
|
-
|
|
292
|
+
67: {
|
|
287
293
|
file: "@apollo/client/utilities/graphql/DocumentTransform.js",
|
|
288
294
|
condition: "Array.isArray(cacheKeys)",
|
|
289
295
|
message: "`getCacheKey` must return an array or undefined"
|
|
290
296
|
},
|
|
291
297
|
|
|
292
|
-
|
|
298
|
+
68: {
|
|
293
299
|
file: "@apollo/client/utilities/graphql/directives.js",
|
|
294
300
|
condition: "evaledValue !== void 0",
|
|
295
301
|
message: "Invalid variable referenced in @%s directive."
|
|
296
302
|
},
|
|
297
303
|
|
|
298
|
-
|
|
304
|
+
69: {
|
|
299
305
|
file: "@apollo/client/utilities/graphql/directives.js",
|
|
300
306
|
condition: "directiveArguments && directiveArguments.length === 1",
|
|
301
307
|
message: "Incorrect number of arguments for the @%s directive."
|
|
302
308
|
},
|
|
303
309
|
|
|
304
|
-
|
|
310
|
+
70: {
|
|
305
311
|
file: "@apollo/client/utilities/graphql/directives.js",
|
|
306
312
|
condition: "ifArgument.name && ifArgument.name.value === \"if\"",
|
|
307
313
|
message: "Invalid argument for the @%s directive."
|
|
308
314
|
},
|
|
309
315
|
|
|
310
|
-
|
|
316
|
+
71: {
|
|
311
317
|
file: "@apollo/client/utilities/graphql/directives.js",
|
|
312
318
|
condition: "ifValue &&\n (ifValue.kind === \"Variable\" || ifValue.kind === \"BooleanValue\")",
|
|
313
319
|
message: "Argument for the @%s directive must be a variable or a boolean value."
|
|
314
320
|
},
|
|
315
321
|
|
|
316
|
-
|
|
322
|
+
72: {
|
|
317
323
|
file: "@apollo/client/utilities/graphql/fragments.js",
|
|
318
324
|
|
|
319
325
|
message: "Found a %s operation%s. " +
|
|
320
326
|
"No operations are allowed when using a fragment as a query. Only fragments are allowed."
|
|
321
327
|
},
|
|
322
328
|
|
|
323
|
-
|
|
329
|
+
73: {
|
|
324
330
|
file: "@apollo/client/utilities/graphql/fragments.js",
|
|
325
331
|
condition: "fragments.length === 1",
|
|
326
332
|
message: "Found %s fragments. `fragmentName` must be provided when there is not exactly 1 fragment."
|
|
327
333
|
},
|
|
328
334
|
|
|
329
|
-
|
|
335
|
+
74: {
|
|
330
336
|
file: "@apollo/client/utilities/graphql/fragments.js",
|
|
331
337
|
condition: "fragment",
|
|
332
338
|
message: "No fragment named %s"
|
|
333
339
|
},
|
|
334
340
|
|
|
335
|
-
|
|
341
|
+
75: {
|
|
336
342
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
337
343
|
condition: "doc && doc.kind === \"Document\"",
|
|
338
344
|
message: "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql"
|
|
339
345
|
},
|
|
340
346
|
|
|
341
|
-
|
|
347
|
+
76: {
|
|
342
348
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
343
349
|
message: "Schema type definitions not allowed in queries. Found: \"%s\""
|
|
344
350
|
},
|
|
345
351
|
|
|
346
|
-
|
|
352
|
+
77: {
|
|
347
353
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
348
354
|
condition: "operations.length <= 1",
|
|
349
355
|
message: "Ambiguous GraphQL document: contains %s operations"
|
|
350
356
|
},
|
|
351
357
|
|
|
352
|
-
|
|
358
|
+
78: {
|
|
353
359
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
354
360
|
condition: "queryDef && queryDef.operation === \"query\"",
|
|
355
361
|
message: "Must contain a query definition."
|
|
356
362
|
},
|
|
357
363
|
|
|
358
|
-
|
|
364
|
+
79: {
|
|
359
365
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
360
366
|
condition: "doc.kind === \"Document\"",
|
|
361
367
|
message: "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql"
|
|
362
368
|
},
|
|
363
369
|
|
|
364
|
-
|
|
370
|
+
80: {
|
|
365
371
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
366
372
|
condition: "doc.definitions.length <= 1",
|
|
367
373
|
message: "Fragment must have exactly one definition."
|
|
368
374
|
},
|
|
369
375
|
|
|
370
|
-
|
|
376
|
+
81: {
|
|
371
377
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
372
378
|
condition: "fragmentDef.kind === \"FragmentDefinition\"",
|
|
373
379
|
message: "Must be a fragment definition."
|
|
374
380
|
},
|
|
375
381
|
|
|
376
|
-
|
|
382
|
+
82: {
|
|
377
383
|
file: "@apollo/client/utilities/graphql/getFromAST.js",
|
|
378
384
|
message: "Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment."
|
|
379
385
|
},
|
|
380
386
|
|
|
381
|
-
|
|
387
|
+
83: {
|
|
382
388
|
file: "@apollo/client/utilities/graphql/storeUtils.js",
|
|
383
389
|
|
|
384
390
|
message: "The inline argument \"%s\" of kind \"%s\"" +
|
|
@@ -492,7 +498,7 @@ export const devWarn = {
|
|
|
492
498
|
message: "Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy."
|
|
493
499
|
},
|
|
494
500
|
|
|
495
|
-
|
|
501
|
+
85: {
|
|
496
502
|
file: "@apollo/client/utilities/graphql/transform.js",
|
|
497
503
|
|
|
498
504
|
message: "Removing an @connection directive even though it does not have a key. " +
|
|
@@ -521,7 +527,7 @@ export const devError = {
|
|
|
521
527
|
message: "The result of getSnapshot should be cached to avoid an infinite loop"
|
|
522
528
|
},
|
|
523
529
|
|
|
524
|
-
|
|
530
|
+
84: {
|
|
525
531
|
file: "@apollo/client/utilities/graphql/transform.js",
|
|
526
532
|
message: "Could not find operation or fragment"
|
|
527
533
|
}
|
|
@@ -27,15 +27,15 @@ function filterOperationVariables(variables, query) {
|
|
|
27
27
|
return result;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
var backupFetch = utilities.maybe(function () { return fetch; });
|
|
30
31
|
var BatchHttpLink = (function (_super) {
|
|
31
32
|
tslib.__extends(BatchHttpLink, _super);
|
|
32
33
|
function BatchHttpLink(fetchParams) {
|
|
33
34
|
var _this = _super.call(this) || this;
|
|
34
35
|
var _a = fetchParams || {}, _b = _a.uri, uri = _b === void 0 ? "/graphql" : _b,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
fetcher = fetch;
|
|
36
|
+
preferredFetch = _a.fetch, _c = _a.print, print = _c === void 0 ? http.defaultPrinter : _c, includeExtensions = _a.includeExtensions, preserveHeaderCase = _a.preserveHeaderCase, batchInterval = _a.batchInterval, batchDebounce = _a.batchDebounce, batchMax = _a.batchMax, batchKey = _a.batchKey, _d = _a.includeUnusedVariables, includeUnusedVariables = _d === void 0 ? false : _d, requestOptions = tslib.__rest(_a, ["uri", "fetch", "print", "includeExtensions", "preserveHeaderCase", "batchInterval", "batchDebounce", "batchMax", "batchKey", "includeUnusedVariables"]);
|
|
37
|
+
if (globalThis.__DEV__ !== false) {
|
|
38
|
+
http.checkFetcher(preferredFetch || backupFetch);
|
|
39
39
|
}
|
|
40
40
|
var linkConfig = {
|
|
41
41
|
http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },
|
|
@@ -102,7 +102,8 @@ var BatchHttpLink = (function (_super) {
|
|
|
102
102
|
options.signal = controller.signal;
|
|
103
103
|
}
|
|
104
104
|
return new utilities.Observable(function (observer) {
|
|
105
|
-
|
|
105
|
+
var currentFetch = preferredFetch || utilities.maybe(function () { return fetch; }) || backupFetch;
|
|
106
|
+
currentFetch(chosenURI, options)
|
|
106
107
|
.then(function (response) {
|
|
107
108
|
operations.forEach(function (operation) {
|
|
108
109
|
return operation.setContext({ response: response });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-http.cjs","sources":["../utils/filterOperationVariables.js","batchHttpLink.js"],"sourcesContent":["import { __assign } from \"tslib\";\nimport { visit } from \"graphql\";\nexport function filterOperationVariables(variables, query) {\n var result = __assign({}, variables);\n var unusedNames = new Set(Object.keys(variables));\n visit(query, {\n Variable: function (node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent &&\n parent.kind !== \"VariableDefinition\") {\n unusedNames.delete(node.name.value);\n }\n },\n });\n unusedNames.forEach(function (name) {\n delete result[name];\n });\n return result;\n}\n//# sourceMappingURL=filterOperationVariables.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives, removeClientSetsFromDocument, } from \"../../utilities/index.js\";\nimport { fromError } from \"../utils/index.js\";\nimport { serializeFetchParameter, selectURI, parseAndCheckHttpResponse, checkFetcher, selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig, } from \"../http/index.js\";\nimport { BatchLink } from \"../batch/index.js\";\nimport { filterOperationVariables } from \"../utils/filterOperationVariables.js\";\n/**\n * Transforms Operation for into HTTP results.\n * context can include the headers property, which will be passed to the fetch function\n */\nvar BatchHttpLink = /** @class */ (function (_super) {\n __extends(BatchHttpLink, _super);\n function BatchHttpLink(fetchParams) {\n var _this = _super.call(this) || this;\n var _a = fetchParams || {}, _b = _a.uri, uri = _b === void 0 ? \"/graphql\" : _b, \n // use default global fetch if nothing is passed in\n fetcher = _a.fetch, _c = _a.print, print = _c === void 0 ? defaultPrinter : _c, includeExtensions = _a.includeExtensions, preserveHeaderCase = _a.preserveHeaderCase, batchInterval = _a.batchInterval, batchDebounce = _a.batchDebounce, batchMax = _a.batchMax, batchKey = _a.batchKey, _d = _a.includeUnusedVariables, includeUnusedVariables = _d === void 0 ? false : _d, requestOptions = __rest(_a, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"batchInterval\", \"batchDebounce\", \"batchMax\", \"batchKey\", \"includeUnusedVariables\"]);\n // dev warnings to ensure fetch is present\n checkFetcher(fetcher);\n //fetcher is set here rather than the destructuring to ensure fetch is\n //declared before referencing it. Reference in the destructuring would cause\n //a ReferenceError\n if (!fetcher) {\n fetcher = fetch;\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n _this.batchDebounce = batchDebounce;\n _this.batchInterval = batchInterval || 10;\n _this.batchMax = batchMax || 10;\n var batchHandler = function (operations) {\n var chosenURI = selectURI(operations[0], uri);\n var context = operations[0].getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name_1;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: __assign(__assign({}, clientAwarenessHeaders), context.headers),\n };\n var queries = operations.map(function (_a) {\n var query = _a.query;\n if (hasDirectives([\"client\"], query)) {\n return removeClientSetsFromDocument(query);\n }\n return query;\n });\n // If we have a query that returned `null` after removing client-only\n // fields, it indicates a query that is using all client-only fields.\n if (queries.some(function (query) { return !query; })) {\n return fromError(new Error(\"BatchHttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or enable the `transformOptions.removeClientFields` option.\"));\n }\n //uses fallback, link, and then context to build options\n var optsAndBody = operations.map(function (operation, index) {\n var result = selectHttpOptionsAndBodyInternal(__assign(__assign({}, operation), { query: queries[index] }), print, fallbackHttpConfig, linkConfig, contextConfig);\n if (result.body.variables && !includeUnusedVariables) {\n result.body.variables = filterOperationVariables(result.body.variables, operation.query);\n }\n return result;\n });\n var loadedBody = optsAndBody.map(function (_a) {\n var body = _a.body;\n return body;\n });\n var options = optsAndBody[0].options;\n // There's no spec for using GET with batches.\n if (options.method === \"GET\") {\n return fromError(new Error(\"apollo-link-batch-http does not support GET requests\"));\n }\n try {\n options.body = serializeFetchParameter(loadedBody, \"Payload\");\n }\n catch (parseError) {\n return fromError(parseError);\n }\n var controller;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n return new Observable(function (observer) {\n fetcher(chosenURI, options)\n .then(function (response) {\n // Make the raw response available in the context.\n operations.forEach(function (operation) {\n return operation.setContext({ response: response });\n });\n return response;\n })\n .then(parseAndCheckHttpResponse(operations))\n .then(function (result) {\n controller = undefined;\n // we have data and can send it to back up the link chain\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch(function (err) {\n controller = undefined;\n // if it is a network error, BUT there is graphql result info\n // fire the next observer before calling error\n // this gives apollo-client (and react-apollo) the `graphqlErrors` and `networkErrors`\n // to pass to UI\n // this should only happen if we *also* have data as part of the response key per\n // the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we dont' call next, the UI can only show networkError because AC didn't\n // get andy graphqlErrors\n // this is graphql execution result info (i.e errors and possibly data)\n // this is because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n });\n return function () {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller)\n controller.abort();\n };\n });\n };\n batchKey =\n batchKey ||\n (function (operation) {\n var context = operation.getContext();\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: context.headers,\n };\n //may throw error if config not serializable\n return selectURI(operation, uri) + JSON.stringify(contextConfig);\n });\n _this.batcher = new BatchLink({\n batchDebounce: _this.batchDebounce,\n batchInterval: _this.batchInterval,\n batchMax: _this.batchMax,\n batchKey: batchKey,\n batchHandler: batchHandler,\n });\n return _this;\n }\n BatchHttpLink.prototype.request = function (operation) {\n return this.batcher.request(operation);\n };\n return BatchHttpLink;\n}(ApolloLink));\nexport { BatchHttpLink };\n//# sourceMappingURL=batchHttpLink.js.map"],"names":["__assign","visit","__extends","defaultPrinter","__rest","checkFetcher","selectURI","hasDirectives","removeClientSetsFromDocument","fromError","selectHttpOptionsAndBodyInternal","fallbackHttpConfig","serializeFetchParameter","Observable","parseAndCheckHttpResponse","BatchLink","ApolloLink"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch-http.cjs","sources":["../utils/filterOperationVariables.js","batchHttpLink.js"],"sourcesContent":["import { __assign } from \"tslib\";\nimport { visit } from \"graphql\";\nexport function filterOperationVariables(variables, query) {\n var result = __assign({}, variables);\n var unusedNames = new Set(Object.keys(variables));\n visit(query, {\n Variable: function (node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent &&\n parent.kind !== \"VariableDefinition\") {\n unusedNames.delete(node.name.value);\n }\n },\n });\n unusedNames.forEach(function (name) {\n delete result[name];\n });\n return result;\n}\n//# sourceMappingURL=filterOperationVariables.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives, maybe, removeClientSetsFromDocument, } from \"../../utilities/index.js\";\nimport { fromError } from \"../utils/index.js\";\nimport { serializeFetchParameter, selectURI, parseAndCheckHttpResponse, checkFetcher, selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig, } from \"../http/index.js\";\nimport { BatchLink } from \"../batch/index.js\";\nimport { filterOperationVariables } from \"../utils/filterOperationVariables.js\";\nvar backupFetch = maybe(function () { return fetch; });\n/**\n * Transforms Operation for into HTTP results.\n * context can include the headers property, which will be passed to the fetch function\n */\nvar BatchHttpLink = /** @class */ (function (_super) {\n __extends(BatchHttpLink, _super);\n function BatchHttpLink(fetchParams) {\n var _this = _super.call(this) || this;\n var _a = fetchParams || {}, _b = _a.uri, uri = _b === void 0 ? \"/graphql\" : _b, \n // use default global fetch if nothing is passed in\n preferredFetch = _a.fetch, _c = _a.print, print = _c === void 0 ? defaultPrinter : _c, includeExtensions = _a.includeExtensions, preserveHeaderCase = _a.preserveHeaderCase, batchInterval = _a.batchInterval, batchDebounce = _a.batchDebounce, batchMax = _a.batchMax, batchKey = _a.batchKey, _d = _a.includeUnusedVariables, includeUnusedVariables = _d === void 0 ? false : _d, requestOptions = __rest(_a, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"batchInterval\", \"batchDebounce\", \"batchMax\", \"batchKey\", \"includeUnusedVariables\"]);\n if (globalThis.__DEV__ !== false) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch\n // is defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n _this.batchDebounce = batchDebounce;\n _this.batchInterval = batchInterval || 10;\n _this.batchMax = batchMax || 10;\n var batchHandler = function (operations) {\n var chosenURI = selectURI(operations[0], uri);\n var context = operations[0].getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name_1;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: __assign(__assign({}, clientAwarenessHeaders), context.headers),\n };\n var queries = operations.map(function (_a) {\n var query = _a.query;\n if (hasDirectives([\"client\"], query)) {\n return removeClientSetsFromDocument(query);\n }\n return query;\n });\n // If we have a query that returned `null` after removing client-only\n // fields, it indicates a query that is using all client-only fields.\n if (queries.some(function (query) { return !query; })) {\n return fromError(new Error(\"BatchHttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or enable the `transformOptions.removeClientFields` option.\"));\n }\n //uses fallback, link, and then context to build options\n var optsAndBody = operations.map(function (operation, index) {\n var result = selectHttpOptionsAndBodyInternal(__assign(__assign({}, operation), { query: queries[index] }), print, fallbackHttpConfig, linkConfig, contextConfig);\n if (result.body.variables && !includeUnusedVariables) {\n result.body.variables = filterOperationVariables(result.body.variables, operation.query);\n }\n return result;\n });\n var loadedBody = optsAndBody.map(function (_a) {\n var body = _a.body;\n return body;\n });\n var options = optsAndBody[0].options;\n // There's no spec for using GET with batches.\n if (options.method === \"GET\") {\n return fromError(new Error(\"apollo-link-batch-http does not support GET requests\"));\n }\n try {\n options.body = serializeFetchParameter(loadedBody, \"Payload\");\n }\n catch (parseError) {\n return fromError(parseError);\n }\n var controller;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n return new Observable(function (observer) {\n // Prefer BatchHttpLink.Options.fetch (preferredFetch) if provided, and\n // otherwise fall back to the *current* global window.fetch function\n // (see issue #7832), or (if all else fails) the backupFetch function we\n // saved when this module was first evaluated. This last option protects\n // against the removal of window.fetch, which is unlikely but not\n // impossible.\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n currentFetch(chosenURI, options)\n .then(function (response) {\n // Make the raw response available in the context.\n operations.forEach(function (operation) {\n return operation.setContext({ response: response });\n });\n return response;\n })\n .then(parseAndCheckHttpResponse(operations))\n .then(function (result) {\n controller = undefined;\n // we have data and can send it to back up the link chain\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch(function (err) {\n controller = undefined;\n // if it is a network error, BUT there is graphql result info\n // fire the next observer before calling error\n // this gives apollo-client (and react-apollo) the `graphqlErrors` and `networkErrors`\n // to pass to UI\n // this should only happen if we *also* have data as part of the response key per\n // the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we dont' call next, the UI can only show networkError because AC didn't\n // get andy graphqlErrors\n // this is graphql execution result info (i.e errors and possibly data)\n // this is because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n });\n return function () {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller)\n controller.abort();\n };\n });\n };\n batchKey =\n batchKey ||\n (function (operation) {\n var context = operation.getContext();\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: context.headers,\n };\n //may throw error if config not serializable\n return selectURI(operation, uri) + JSON.stringify(contextConfig);\n });\n _this.batcher = new BatchLink({\n batchDebounce: _this.batchDebounce,\n batchInterval: _this.batchInterval,\n batchMax: _this.batchMax,\n batchKey: batchKey,\n batchHandler: batchHandler,\n });\n return _this;\n }\n BatchHttpLink.prototype.request = function (operation) {\n return this.batcher.request(operation);\n };\n return BatchHttpLink;\n}(ApolloLink));\nexport { BatchHttpLink };\n//# sourceMappingURL=batchHttpLink.js.map"],"names":["__assign","visit","maybe","__extends","defaultPrinter","__rest","checkFetcher","selectURI","hasDirectives","removeClientSetsFromDocument","fromError","selectHttpOptionsAndBodyInternal","fallbackHttpConfig","serializeFetchParameter","Observable","parseAndCheckHttpResponse","BatchLink","ApolloLink"],"mappings":"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"}
|
|
@@ -27,15 +27,15 @@ function filterOperationVariables(variables, query) {
|
|
|
27
27
|
return result;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
var backupFetch = utilities.maybe(function () { return fetch; });
|
|
30
31
|
var BatchHttpLink = (function (_super) {
|
|
31
32
|
tslib.__extends(BatchHttpLink, _super);
|
|
32
33
|
function BatchHttpLink(fetchParams) {
|
|
33
34
|
var _this = _super.call(this) || this;
|
|
34
35
|
var _a = fetchParams || {}, _b = _a.uri, uri = _b === void 0 ? "/graphql" : _b,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
fetcher = fetch;
|
|
36
|
+
preferredFetch = _a.fetch, _c = _a.print, print = _c === void 0 ? http.defaultPrinter : _c, includeExtensions = _a.includeExtensions, preserveHeaderCase = _a.preserveHeaderCase, batchInterval = _a.batchInterval, batchDebounce = _a.batchDebounce, batchMax = _a.batchMax, batchKey = _a.batchKey, _d = _a.includeUnusedVariables, includeUnusedVariables = _d === void 0 ? false : _d, requestOptions = tslib.__rest(_a, ["uri", "fetch", "print", "includeExtensions", "preserveHeaderCase", "batchInterval", "batchDebounce", "batchMax", "batchKey", "includeUnusedVariables"]);
|
|
37
|
+
if (globalThis.__DEV__ !== false) {
|
|
38
|
+
http.checkFetcher(preferredFetch || backupFetch);
|
|
39
39
|
}
|
|
40
40
|
var linkConfig = {
|
|
41
41
|
http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },
|
|
@@ -102,7 +102,8 @@ var BatchHttpLink = (function (_super) {
|
|
|
102
102
|
options.signal = controller.signal;
|
|
103
103
|
}
|
|
104
104
|
return new utilities.Observable(function (observer) {
|
|
105
|
-
|
|
105
|
+
var currentFetch = preferredFetch || utilities.maybe(function () { return fetch; }) || backupFetch;
|
|
106
|
+
currentFetch(chosenURI, options)
|
|
106
107
|
.then(function (response) {
|
|
107
108
|
operations.forEach(function (operation) {
|
|
108
109
|
return operation.setContext({ response: response });
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { __assign, __extends, __rest } from "tslib";
|
|
2
2
|
import { ApolloLink } from "../core/index.js";
|
|
3
|
-
import { Observable, hasDirectives, removeClientSetsFromDocument, } from "../../utilities/index.js";
|
|
3
|
+
import { Observable, hasDirectives, maybe, removeClientSetsFromDocument, } from "../../utilities/index.js";
|
|
4
4
|
import { fromError } from "../utils/index.js";
|
|
5
5
|
import { serializeFetchParameter, selectURI, parseAndCheckHttpResponse, checkFetcher, selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig, } from "../http/index.js";
|
|
6
6
|
import { BatchLink } from "../batch/index.js";
|
|
7
7
|
import { filterOperationVariables } from "../utils/filterOperationVariables.js";
|
|
8
|
+
var backupFetch = maybe(function () { return fetch; });
|
|
8
9
|
/**
|
|
9
10
|
* Transforms Operation for into HTTP results.
|
|
10
11
|
* context can include the headers property, which will be passed to the fetch function
|
|
@@ -15,14 +16,11 @@ var BatchHttpLink = /** @class */ (function (_super) {
|
|
|
15
16
|
var _this = _super.call(this) || this;
|
|
16
17
|
var _a = fetchParams || {}, _b = _a.uri, uri = _b === void 0 ? "/graphql" : _b,
|
|
17
18
|
// use default global fetch if nothing is passed in
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//a ReferenceError
|
|
24
|
-
if (!fetcher) {
|
|
25
|
-
fetcher = fetch;
|
|
19
|
+
preferredFetch = _a.fetch, _c = _a.print, print = _c === void 0 ? defaultPrinter : _c, includeExtensions = _a.includeExtensions, preserveHeaderCase = _a.preserveHeaderCase, batchInterval = _a.batchInterval, batchDebounce = _a.batchDebounce, batchMax = _a.batchMax, batchKey = _a.batchKey, _d = _a.includeUnusedVariables, includeUnusedVariables = _d === void 0 ? false : _d, requestOptions = __rest(_a, ["uri", "fetch", "print", "includeExtensions", "preserveHeaderCase", "batchInterval", "batchDebounce", "batchMax", "batchKey", "includeUnusedVariables"]);
|
|
20
|
+
if (globalThis.__DEV__ !== false) {
|
|
21
|
+
// Make sure at least one of preferredFetch, window.fetch, or backupFetch
|
|
22
|
+
// is defined, so requests won't fail at runtime.
|
|
23
|
+
checkFetcher(preferredFetch || backupFetch);
|
|
26
24
|
}
|
|
27
25
|
var linkConfig = {
|
|
28
26
|
http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },
|
|
@@ -93,7 +91,14 @@ var BatchHttpLink = /** @class */ (function (_super) {
|
|
|
93
91
|
options.signal = controller.signal;
|
|
94
92
|
}
|
|
95
93
|
return new Observable(function (observer) {
|
|
96
|
-
|
|
94
|
+
// Prefer BatchHttpLink.Options.fetch (preferredFetch) if provided, and
|
|
95
|
+
// otherwise fall back to the *current* global window.fetch function
|
|
96
|
+
// (see issue #7832), or (if all else fails) the backupFetch function we
|
|
97
|
+
// saved when this module was first evaluated. This last option protects
|
|
98
|
+
// against the removal of window.fetch, which is unlikely but not
|
|
99
|
+
// impossible.
|
|
100
|
+
var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;
|
|
101
|
+
currentFetch(chosenURI, options)
|
|
97
102
|
.then(function (response) {
|
|
98
103
|
// Make the raw response available in the context.
|
|
99
104
|
operations.forEach(function (operation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchHttpLink.js","sourceRoot":"","sources":["../../../src/link/batch-http/batchHttpLink.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Operation, FetchResult } from \"../core/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nimport {\n Observable,\n hasDirectives,\n removeClientSetsFromDocument,\n} from \"../../utilities/index.js\";\nimport { fromError } from \"../utils/index.js\";\nimport type { HttpOptions } from \"../http/index.js\";\nimport {\n serializeFetchParameter,\n selectURI,\n parseAndCheckHttpResponse,\n checkFetcher,\n selectHttpOptionsAndBodyInternal,\n defaultPrinter,\n fallbackHttpConfig,\n} from \"../http/index.js\";\nimport { BatchLink } from \"../batch/index.js\";\nimport { filterOperationVariables } from \"../utils/filterOperationVariables.js\";\n\nexport namespace BatchHttpLink {\n export type Options = Pick<\n BatchLink.Options,\n \"batchMax\" | \"batchDebounce\" | \"batchInterval\" | \"batchKey\"\n > &\n Omit<HttpOptions, \"useGETForQueries\">;\n}\n\n/**\n * Transforms Operation for into HTTP results.\n * context can include the headers property, which will be passed to the fetch function\n */\nexport class BatchHttpLink extends ApolloLink {\n private batchDebounce?: boolean;\n private batchInterval: number;\n private batchMax: number;\n private batcher: ApolloLink;\n\n constructor(fetchParams?: BatchHttpLink.Options) {\n super();\n\n let {\n uri = \"/graphql\",\n // use default global fetch if nothing is passed in\n fetch: fetcher,\n print = defaultPrinter,\n includeExtensions,\n preserveHeaderCase,\n batchInterval,\n batchDebounce,\n batchMax,\n batchKey,\n includeUnusedVariables = false,\n ...requestOptions\n } = fetchParams || ({} as BatchHttpLink.Options);\n\n // dev warnings to ensure fetch is present\n checkFetcher(fetcher);\n\n //fetcher is set here rather than the destructuring to ensure fetch is\n //declared before referencing it. Reference in the destructuring would cause\n //a ReferenceError\n if (!fetcher) {\n fetcher = fetch;\n }\n\n const linkConfig = {\n http: { includeExtensions, preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n\n this.batchDebounce = batchDebounce;\n this.batchInterval = batchInterval || 10;\n this.batchMax = batchMax || 10;\n\n const batchHandler = (operations: Operation[]) => {\n const chosenURI = selectURI(operations[0], uri);\n\n const context = operations[0].getContext();\n\n const clientAwarenessHeaders: {\n \"apollographql-client-name\"?: string;\n \"apollographql-client-version\"?: string;\n } = {};\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n if (name) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: { ...clientAwarenessHeaders, ...context.headers },\n };\n\n const queries = operations.map(({ query }) => {\n if (hasDirectives([\"client\"], query)) {\n return removeClientSetsFromDocument(query);\n }\n\n return query;\n });\n\n // If we have a query that returned `null` after removing client-only\n // fields, it indicates a query that is using all client-only fields.\n if (queries.some((query) => !query)) {\n return fromError<FetchResult[]>(\n new Error(\n \"BatchHttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or enable the `transformOptions.removeClientFields` option.\"\n )\n );\n }\n\n //uses fallback, link, and then context to build options\n const optsAndBody = operations.map((operation, index) => {\n const result = selectHttpOptionsAndBodyInternal(\n { ...operation, query: queries[index]! },\n print,\n fallbackHttpConfig,\n linkConfig,\n contextConfig\n );\n\n if (result.body.variables && !includeUnusedVariables) {\n result.body.variables = filterOperationVariables(\n result.body.variables,\n operation.query\n );\n }\n\n return result;\n });\n\n const loadedBody = optsAndBody.map(({ body }) => body);\n const options = optsAndBody[0].options;\n\n // There's no spec for using GET with batches.\n if (options.method === \"GET\") {\n return fromError<FetchResult[]>(\n new Error(\"apollo-link-batch-http does not support GET requests\")\n );\n }\n\n try {\n (options as any).body = serializeFetchParameter(loadedBody, \"Payload\");\n } catch (parseError) {\n return fromError<FetchResult[]>(parseError);\n }\n\n let controller: AbortController | undefined;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n\n return new Observable<FetchResult[]>((observer) => {\n fetcher!(chosenURI, options)\n .then((response) => {\n // Make the raw response available in the context.\n operations.forEach((operation) =>\n operation.setContext({ response })\n );\n return response;\n })\n .then(parseAndCheckHttpResponse(operations))\n .then((result) => {\n controller = undefined;\n // we have data and can send it to back up the link chain\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch((err) => {\n controller = undefined;\n // if it is a network error, BUT there is graphql result info\n // fire the next observer before calling error\n // this gives apollo-client (and react-apollo) the `graphqlErrors` and `networkErrors`\n // to pass to UI\n // this should only happen if we *also* have data as part of the response key per\n // the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we dont' call next, the UI can only show networkError because AC didn't\n // get andy graphqlErrors\n // this is graphql execution result info (i.e errors and possibly data)\n // this is because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n\n observer.error(err);\n });\n\n return () => {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller) controller.abort();\n };\n });\n };\n\n batchKey =\n batchKey ||\n ((operation: Operation) => {\n const context = operation.getContext();\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: context.headers,\n };\n\n //may throw error if config not serializable\n return selectURI(operation, uri) + JSON.stringify(contextConfig);\n });\n\n this.batcher = new BatchLink({\n batchDebounce: this.batchDebounce,\n batchInterval: this.batchInterval,\n batchMax: this.batchMax,\n batchKey,\n batchHandler,\n });\n }\n\n public request(operation: Operation): Observable<FetchResult> | null {\n return this.batcher.request(operation);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"batchHttpLink.js","sourceRoot":"","sources":["../../../src/link/batch-http/batchHttpLink.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Operation, FetchResult } from \"../core/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nimport {\n Observable,\n hasDirectives,\n maybe,\n removeClientSetsFromDocument,\n} from \"../../utilities/index.js\";\nimport { fromError } from \"../utils/index.js\";\nimport type { HttpOptions } from \"../http/index.js\";\nimport {\n serializeFetchParameter,\n selectURI,\n parseAndCheckHttpResponse,\n checkFetcher,\n selectHttpOptionsAndBodyInternal,\n defaultPrinter,\n fallbackHttpConfig,\n} from \"../http/index.js\";\nimport { BatchLink } from \"../batch/index.js\";\nimport { filterOperationVariables } from \"../utils/filterOperationVariables.js\";\n\nexport namespace BatchHttpLink {\n export type Options = Pick<\n BatchLink.Options,\n \"batchMax\" | \"batchDebounce\" | \"batchInterval\" | \"batchKey\"\n > &\n Omit<HttpOptions, \"useGETForQueries\">;\n}\n\nconst backupFetch = maybe(() => fetch);\n\n/**\n * Transforms Operation for into HTTP results.\n * context can include the headers property, which will be passed to the fetch function\n */\nexport class BatchHttpLink extends ApolloLink {\n private batchDebounce?: boolean;\n private batchInterval: number;\n private batchMax: number;\n private batcher: ApolloLink;\n\n constructor(fetchParams?: BatchHttpLink.Options) {\n super();\n\n let {\n uri = \"/graphql\",\n // use default global fetch if nothing is passed in\n fetch: preferredFetch,\n print = defaultPrinter,\n includeExtensions,\n preserveHeaderCase,\n batchInterval,\n batchDebounce,\n batchMax,\n batchKey,\n includeUnusedVariables = false,\n ...requestOptions\n } = fetchParams || ({} as BatchHttpLink.Options);\n\n if (__DEV__) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch\n // is defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n\n const linkConfig = {\n http: { includeExtensions, preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n\n this.batchDebounce = batchDebounce;\n this.batchInterval = batchInterval || 10;\n this.batchMax = batchMax || 10;\n\n const batchHandler = (operations: Operation[]) => {\n const chosenURI = selectURI(operations[0], uri);\n\n const context = operations[0].getContext();\n\n const clientAwarenessHeaders: {\n \"apollographql-client-name\"?: string;\n \"apollographql-client-version\"?: string;\n } = {};\n if (context.clientAwareness) {\n const { name, version } = context.clientAwareness;\n if (name) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: { ...clientAwarenessHeaders, ...context.headers },\n };\n\n const queries = operations.map(({ query }) => {\n if (hasDirectives([\"client\"], query)) {\n return removeClientSetsFromDocument(query);\n }\n\n return query;\n });\n\n // If we have a query that returned `null` after removing client-only\n // fields, it indicates a query that is using all client-only fields.\n if (queries.some((query) => !query)) {\n return fromError<FetchResult[]>(\n new Error(\n \"BatchHttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or enable the `transformOptions.removeClientFields` option.\"\n )\n );\n }\n\n //uses fallback, link, and then context to build options\n const optsAndBody = operations.map((operation, index) => {\n const result = selectHttpOptionsAndBodyInternal(\n { ...operation, query: queries[index]! },\n print,\n fallbackHttpConfig,\n linkConfig,\n contextConfig\n );\n\n if (result.body.variables && !includeUnusedVariables) {\n result.body.variables = filterOperationVariables(\n result.body.variables,\n operation.query\n );\n }\n\n return result;\n });\n\n const loadedBody = optsAndBody.map(({ body }) => body);\n const options = optsAndBody[0].options;\n\n // There's no spec for using GET with batches.\n if (options.method === \"GET\") {\n return fromError<FetchResult[]>(\n new Error(\"apollo-link-batch-http does not support GET requests\")\n );\n }\n\n try {\n (options as any).body = serializeFetchParameter(loadedBody, \"Payload\");\n } catch (parseError) {\n return fromError<FetchResult[]>(parseError);\n }\n\n let controller: AbortController | undefined;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n\n return new Observable<FetchResult[]>((observer) => {\n // Prefer BatchHttpLink.Options.fetch (preferredFetch) if provided, and\n // otherwise fall back to the *current* global window.fetch function\n // (see issue #7832), or (if all else fails) the backupFetch function we\n // saved when this module was first evaluated. This last option protects\n // against the removal of window.fetch, which is unlikely but not\n // impossible.\n const currentFetch =\n preferredFetch || maybe(() => fetch) || backupFetch;\n\n currentFetch!(chosenURI, options)\n .then((response) => {\n // Make the raw response available in the context.\n operations.forEach((operation) =>\n operation.setContext({ response })\n );\n return response;\n })\n .then(parseAndCheckHttpResponse(operations))\n .then((result) => {\n controller = undefined;\n // we have data and can send it to back up the link chain\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch((err) => {\n controller = undefined;\n // if it is a network error, BUT there is graphql result info\n // fire the next observer before calling error\n // this gives apollo-client (and react-apollo) the `graphqlErrors` and `networkErrors`\n // to pass to UI\n // this should only happen if we *also* have data as part of the response key per\n // the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we dont' call next, the UI can only show networkError because AC didn't\n // get andy graphqlErrors\n // this is graphql execution result info (i.e errors and possibly data)\n // this is because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n\n observer.error(err);\n });\n\n return () => {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller) controller.abort();\n };\n });\n };\n\n batchKey =\n batchKey ||\n ((operation: Operation) => {\n const context = operation.getContext();\n\n const contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: context.headers,\n };\n\n //may throw error if config not serializable\n return selectURI(operation, uri) + JSON.stringify(contextConfig);\n });\n\n this.batcher = new BatchLink({\n batchDebounce: this.batchDebounce,\n batchInterval: this.batchInterval,\n batchMax: this.batchMax,\n batchKey,\n batchHandler,\n });\n }\n\n public request(operation: Operation): Observable<FetchResult> | null {\n return this.batcher.request(operation);\n }\n}\n"]}
|
package/link/error/error.cjs
CHANGED
|
@@ -37,9 +37,10 @@ function onError(errorHandler) {
|
|
|
37
37
|
retriedResult = errorHandler({
|
|
38
38
|
operation: operation,
|
|
39
39
|
networkError: networkError,
|
|
40
|
-
graphQLErrors: networkError &&
|
|
40
|
+
graphQLErrors: (networkError &&
|
|
41
41
|
networkError.result &&
|
|
42
|
-
networkError.result.errors
|
|
42
|
+
networkError.result.errors) ||
|
|
43
|
+
void 0,
|
|
43
44
|
forward: forward,
|
|
44
45
|
});
|
|
45
46
|
if (retriedResult) {
|
package/link/error/error.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.cjs","sources":["index.js"],"sourcesContent":["import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors: networkError &&\n networkError.result &&\n networkError.result.errors,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n }\n catch (e) {\n errorHandler({ networkError: e, operation: operation, forward: forward });\n observer.error(e);\n }\n return function () {\n if (sub)\n sub.unsubscribe();\n if (retriedSub)\n sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = /** @class */ (function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink));\nexport { ErrorLink };\n//# sourceMappingURL=index.js.map"],"names":["ApolloLink","Observable","__extends"],"mappings":";;;;;;;;AAGO,SAAS,OAAO,CAAC,YAAY,EAAE;AACtC,IAAI,OAAO,IAAIA,eAAU,CAAC,UAAU,SAAS,EAAE,OAAO,EAAE;AACxD,QAAQ,OAAO,IAAIC,oBAAU,CAAC,UAAU,QAAQ,EAAE;AAClD,YAAY,IAAI,GAAG,CAAC;AACpB,YAAY,IAAI,UAAU,CAAC;AAC3B,YAAY,IAAI,aAAa,CAAC;AAC9B,YAAY,IAAI;AAChB,gBAAgB,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;AACnD,oBAAoB,IAAI,EAAE,UAAU,MAAM,EAAE;AAC5C,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE;AAC3C,4BAA4B,aAAa,GAAG,YAAY,CAAC;AACzD,gCAAgC,aAAa,EAAE,MAAM,CAAC,MAAM;AAC5D,gCAAgC,QAAQ,EAAE,MAAM;AAChD,gCAAgC,SAAS,EAAE,SAAS;AACpD,gCAAgC,OAAO,EAAE,OAAO;AAChD,6BAA6B,CAAC,CAAC;AAC/B,4BAA4B,IAAI,aAAa,EAAE;AAC/C,gCAAgC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;AACrE,oCAAoC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtE,oCAAoC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxE,oCAAoC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9E,iCAAiC,CAAC,CAAC;AACnC,gCAAgC,OAAO;AACvC,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,qBAAqB;AACrB,oBAAoB,KAAK,EAAE,UAAU,YAAY,EAAE;AACnD,wBAAwB,aAAa,GAAG,YAAY,CAAC;AACrD,4BAA4B,SAAS,EAAE,SAAS;AAChD,4BAA4B,YAAY,EAAE,YAAY;AAEtD,4BAA4B,aAAa,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"error.cjs","sources":["index.js"],"sourcesContent":["import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors: (networkError &&\n networkError.result &&\n networkError.result.errors) ||\n void 0,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n }\n catch (e) {\n errorHandler({ networkError: e, operation: operation, forward: forward });\n observer.error(e);\n }\n return function () {\n if (sub)\n sub.unsubscribe();\n if (retriedSub)\n sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = /** @class */ (function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink));\nexport { ErrorLink };\n//# sourceMappingURL=index.js.map"],"names":["ApolloLink","Observable","__extends"],"mappings":"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"}
|
|
@@ -37,9 +37,10 @@ function onError(errorHandler) {
|
|
|
37
37
|
retriedResult = errorHandler({
|
|
38
38
|
operation: operation,
|
|
39
39
|
networkError: networkError,
|
|
40
|
-
graphQLErrors: networkError &&
|
|
40
|
+
graphQLErrors: (networkError &&
|
|
41
41
|
networkError.result &&
|
|
42
|
-
networkError.result.errors
|
|
42
|
+
networkError.result.errors) ||
|
|
43
|
+
void 0,
|
|
43
44
|
forward: forward,
|
|
44
45
|
});
|
|
45
46
|
if (retriedResult) {
|
package/link/error/index.js
CHANGED
|
@@ -33,9 +33,10 @@ export function onError(errorHandler) {
|
|
|
33
33
|
operation: operation,
|
|
34
34
|
networkError: networkError,
|
|
35
35
|
//Network errors can return GraphQL errors on for example a 403
|
|
36
|
-
graphQLErrors: networkError &&
|
|
36
|
+
graphQLErrors: (networkError &&
|
|
37
37
|
networkError.result &&
|
|
38
|
-
networkError.result.errors
|
|
38
|
+
networkError.result.errors) ||
|
|
39
|
+
void 0,
|
|
39
40
|
forward: forward,
|
|
40
41
|
});
|
|
41
42
|
if (retriedResult) {
|
package/link/error/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/error/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsB9C,MAAM,UAAU,OAAO,CAAC,YAA0B;IAChD,OAAO,IAAI,UAAU,CAAC,UAAC,SAAS,EAAE,OAAO;QACvC,OAAO,IAAI,UAAU,CAAC,UAAC,QAAQ;YAC7B,IAAI,GAAQ,CAAC;YACb,IAAI,UAAe,CAAC;YACpB,IAAI,aAAkB,CAAC;YAEvB,IAAI,CAAC;gBACH,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;oBACjC,IAAI,EAAE,UAAC,MAAM;wBACX,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;4BAClB,aAAa,GAAG,YAAY,CAAC;gCAC3B,aAAa,EAAE,MAAM,CAAC,MAAM;gCAC5B,QAAQ,EAAE,MAAM;gCAChB,SAAS,WAAA;gCACT,OAAO,SAAA;6BACR,CAAC,CAAC;4BAEH,IAAI,aAAa,EAAE,CAAC;gCAClB,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;oCACnC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oCAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;oCACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;iCAC3C,CAAC,CAAC;gCACH,OAAO;4BACT,CAAC;wBACH,CAAC;wBACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxB,CAAC;oBACD,KAAK,EAAE,UAAC,YAAY;wBAClB,aAAa,GAAG,YAAY,CAAC;4BAC3B,SAAS,WAAA;4BACT,YAAY,cAAA;4BACZ,+DAA+D;4BAC/D,aAAa,EACX,YAAY;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/error/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExecutionResult } from \"graphql\";\n\nimport type { NetworkError, GraphQLErrors } from \"../../errors/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport type { Operation, FetchResult, NextLink } from \"../core/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\n\nexport interface ErrorResponse {\n graphQLErrors?: GraphQLErrors;\n networkError?: NetworkError;\n response?: ExecutionResult;\n operation: Operation;\n forward: NextLink;\n}\n\nexport namespace ErrorLink {\n /**\n * Callback to be triggered when an error occurs within the link stack.\n */\n export interface ErrorHandler {\n (error: ErrorResponse): Observable<FetchResult> | void;\n }\n}\n\n// For backwards compatibility.\nexport import ErrorHandler = ErrorLink.ErrorHandler;\n\nexport function onError(errorHandler: ErrorHandler): ApolloLink {\n return new ApolloLink((operation, forward) => {\n return new Observable((observer) => {\n let sub: any;\n let retriedSub: any;\n let retriedResult: any;\n\n try {\n sub = forward(operation).subscribe({\n next: (result) => {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation,\n forward,\n });\n\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: (networkError) => {\n retriedResult = errorHandler({\n operation,\n networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors:\n (networkError &&\n networkError.result &&\n networkError.result.errors) ||\n void 0,\n forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: () => {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n } catch (e) {\n errorHandler({ networkError: e as Error, operation, forward });\n observer.error(e);\n }\n\n return () => {\n if (sub) sub.unsubscribe();\n if (retriedSub) sub.unsubscribe();\n };\n });\n });\n}\n\nexport class ErrorLink extends ApolloLink {\n private link: ApolloLink;\n constructor(errorHandler: ErrorLink.ErrorHandler) {\n super();\n this.link = onError(errorHandler);\n }\n\n public request(\n operation: Operation,\n forward: NextLink\n ): Observable<FetchResult> | null {\n return this.link.request(operation, forward);\n }\n}\n"]}
|