@apollo/client 3.9.0-alpha.0 → 3.9.0-alpha.2

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.
Files changed (104) hide show
  1. package/apollo-client.cjs +116 -136
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +6 -29
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +6 -29
  7. package/cache/index.d.ts +1 -2
  8. package/cache/index.d.ts.map +1 -1
  9. package/cache/index.js +1 -2
  10. package/cache/index.js.map +1 -1
  11. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  12. package/cache/inmemory/inMemoryCache.js +1 -2
  13. package/cache/inmemory/inMemoryCache.js.map +1 -1
  14. package/cache/inmemory/object-canon.d.ts +0 -5
  15. package/cache/inmemory/object-canon.d.ts.map +1 -1
  16. package/cache/inmemory/object-canon.js +0 -22
  17. package/cache/inmemory/object-canon.js.map +1 -1
  18. package/cache/inmemory/policies.d.ts.map +1 -1
  19. package/cache/inmemory/policies.js +0 -2
  20. package/cache/inmemory/policies.js.map +1 -1
  21. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  22. package/cache/inmemory/readFromStore.js +2 -2
  23. package/cache/inmemory/readFromStore.js.map +1 -1
  24. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  25. package/cache/inmemory/writeToStore.js +1 -2
  26. package/cache/inmemory/writeToStore.js.map +1 -1
  27. package/core/ObservableQuery.d.ts.map +1 -1
  28. package/core/ObservableQuery.js +5 -6
  29. package/core/ObservableQuery.js.map +1 -1
  30. package/core/QueryInfo.d.ts +0 -2
  31. package/core/QueryInfo.d.ts.map +1 -1
  32. package/core/QueryInfo.js +0 -2
  33. package/core/QueryInfo.js.map +1 -1
  34. package/core/QueryManager.js +2 -2
  35. package/core/QueryManager.js.map +1 -1
  36. package/core/core.cjs +8 -11
  37. package/core/core.cjs.map +1 -1
  38. package/core/core.cjs.native.js +8 -11
  39. package/dev/dev.cjs +52 -37
  40. package/dev/dev.cjs.map +1 -1
  41. package/dev/dev.cjs.native.js +52 -37
  42. package/dev/loadErrorMessageHandler.js +1 -1
  43. package/dev/loadErrorMessageHandler.js.map +1 -1
  44. package/invariantErrorCodes.js +24 -18
  45. package/package.json +7 -7
  46. package/react/cache/index.d.ts +0 -4
  47. package/react/cache/index.d.ts.map +1 -1
  48. package/react/cache/index.js +0 -14
  49. package/react/cache/index.js.map +1 -1
  50. package/react/index.d.ts +0 -1
  51. package/react/index.d.ts.map +1 -1
  52. package/react/index.js +0 -1
  53. package/react/index.js.map +1 -1
  54. package/react/react.cjs +1 -218
  55. package/react/react.cjs.map +1 -1
  56. package/react/react.cjs.native.js +1 -218
  57. package/react/types/types.d.ts +0 -3
  58. package/react/types/types.d.ts.map +1 -1
  59. package/react/types/types.js.map +1 -1
  60. package/testing/core/core.cjs +9 -1
  61. package/testing/core/core.cjs.map +1 -1
  62. package/testing/core/core.cjs.native.js +9 -1
  63. package/testing/core/mocking/mockLink.d.ts +1 -0
  64. package/testing/core/mocking/mockLink.d.ts.map +1 -1
  65. package/testing/core/mocking/mockLink.js +9 -1
  66. package/testing/core/mocking/mockLink.js.map +1 -1
  67. package/testing/internal/ObservableStream.d.ts +26 -0
  68. package/testing/internal/ObservableStream.d.ts.map +1 -0
  69. package/testing/internal/ObservableStream.js +101 -0
  70. package/testing/internal/ObservableStream.js.map +1 -0
  71. package/testing/internal/index.d.ts +1 -0
  72. package/testing/internal/index.d.ts.map +1 -1
  73. package/testing/internal/index.js +1 -0
  74. package/testing/internal/index.js.map +1 -1
  75. package/utilities/common/canonicalStringify.d.ts +4 -0
  76. package/utilities/common/canonicalStringify.d.ts.map +1 -0
  77. package/utilities/common/canonicalStringify.js +37 -0
  78. package/utilities/common/canonicalStringify.js.map +1 -0
  79. package/utilities/globals/globals.cjs +29 -19
  80. package/utilities/globals/globals.cjs.map +1 -1
  81. package/utilities/globals/globals.cjs.native.js +29 -19
  82. package/utilities/globals/invariantWrappers.d.ts.map +1 -1
  83. package/utilities/globals/invariantWrappers.js +28 -18
  84. package/utilities/globals/invariantWrappers.js.map +1 -1
  85. package/utilities/graphql/DocumentTransform.js +1 -1
  86. package/utilities/graphql/directives.js +4 -4
  87. package/utilities/graphql/fragments.js +3 -3
  88. package/utilities/graphql/getFromAST.js +8 -8
  89. package/utilities/graphql/storeUtils.d.ts +2 -2
  90. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  91. package/utilities/graphql/storeUtils.js +8 -20
  92. package/utilities/graphql/storeUtils.js.map +1 -1
  93. package/utilities/graphql/transform.js +2 -2
  94. package/utilities/index.d.ts +1 -0
  95. package/utilities/index.d.ts.map +1 -1
  96. package/utilities/index.js +1 -0
  97. package/utilities/index.js.map +1 -1
  98. package/utilities/observables/asyncMap.d.ts.map +1 -1
  99. package/utilities/observables/asyncMap.js +17 -34
  100. package/utilities/observables/asyncMap.js.map +1 -1
  101. package/utilities/utilities.cjs +80 -72
  102. package/utilities/utilities.cjs.map +1 -1
  103. package/utilities/utilities.cjs.native.js +80 -72
  104. package/version.js +1 -1
@@ -78,7 +78,12 @@ var MockLink = (function (_super) {
78
78
  }
79
79
  }
80
80
  else {
81
- mockedResponses.splice(responseIndex, 1);
81
+ if (response.maxUsageCount > 1) {
82
+ response.maxUsageCount--;
83
+ }
84
+ else {
85
+ mockedResponses.splice(responseIndex, 1);
86
+ }
82
87
  var newData = response.newData;
83
88
  if (newData) {
84
89
  response.result = newData(operation.variables);
@@ -120,6 +125,7 @@ var MockLink = (function (_super) {
120
125
  });
121
126
  };
122
127
  MockLink.prototype.normalizeMockedResponse = function (mockedResponse) {
128
+ var _a;
123
129
  var newMockedResponse = utilities.cloneDeep(mockedResponse);
124
130
  var queryWithoutConnection = utilities.removeConnectionDirectiveFromDocument(newMockedResponse.request.query);
125
131
  globals.invariant(queryWithoutConnection, 62);
@@ -128,6 +134,8 @@ var MockLink = (function (_super) {
128
134
  if (query) {
129
135
  newMockedResponse.request.query = query;
130
136
  }
137
+ mockedResponse.maxUsageCount = (_a = mockedResponse.maxUsageCount) !== null && _a !== void 0 ? _a : 1;
138
+ globals.invariant(mockedResponse.maxUsageCount > 0, 63, mockedResponse.maxUsageCount);
131
139
  this.normalizeVariableMatching(newMockedResponse);
132
140
  return newMockedResponse;
133
141
  };
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","sources":["mocking/mockLink.js","mocking/mockSubscriptionLink.js","mocking/mockClient.js","subscribeAndCount.js","itAsync.js","wait.js","withConsoleSpy.js"],"sourcesContent":["import { __extends } from \"tslib\";\nimport { invariant } from \"../../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloLink } from \"../../../link/core/index.js\";\nimport { Observable, addTypenameToDocument, removeClientSetsFromDocument, removeConnectionDirectiveFromDocument, cloneDeep, stringifyForDisplay, print, } from \"../../../utilities/index.js\";\nfunction requestToKey(request, addTypename) {\n var queryString = request.query &&\n print(addTypename ? addTypenameToDocument(request.query) : request.query);\n var requestKey = { query: queryString };\n return JSON.stringify(requestKey);\n}\nvar MockLink = (function (_super) {\n __extends(MockLink, _super);\n function MockLink(mockedResponses, addTypename, options) {\n if (addTypename === void 0) { addTypename = true; }\n if (options === void 0) { options = Object.create(null); }\n var _a;\n var _this = _super.call(this) || this;\n _this.addTypename = true;\n _this.showWarnings = true;\n _this.mockedResponsesByKey = {};\n _this.addTypename = addTypename;\n _this.showWarnings = (_a = options.showWarnings) !== null && _a !== void 0 ? _a : true;\n if (mockedResponses) {\n mockedResponses.forEach(function (mockedResponse) {\n _this.addMockedResponse(mockedResponse);\n });\n }\n return _this;\n }\n MockLink.prototype.addMockedResponse = function (mockedResponse) {\n var normalizedMockedResponse = this.normalizeMockedResponse(mockedResponse);\n var key = requestToKey(normalizedMockedResponse.request, this.addTypename);\n var mockedResponses = this.mockedResponsesByKey[key];\n if (!mockedResponses) {\n mockedResponses = [];\n this.mockedResponsesByKey[key] = mockedResponses;\n }\n mockedResponses.push(normalizedMockedResponse);\n };\n MockLink.prototype.request = function (operation) {\n var _this = this;\n this.operation = operation;\n var key = requestToKey(operation, this.addTypename);\n var unmatchedVars = [];\n var requestVariables = operation.variables || {};\n var mockedResponses = this.mockedResponsesByKey[key];\n var responseIndex = mockedResponses\n ? mockedResponses.findIndex(function (res, index) {\n var mockedResponseVars = res.request.variables || {};\n if (equal(requestVariables, mockedResponseVars)) {\n return true;\n }\n if (res.variableMatcher && res.variableMatcher(operation.variables)) {\n return true;\n }\n unmatchedVars.push(mockedResponseVars);\n return false;\n })\n : -1;\n var response = responseIndex >= 0 ? mockedResponses[responseIndex] : void 0;\n var configError;\n if (!response) {\n configError = new Error(\"No more mocked responses for the query: \".concat(print(operation.query), \"\\nExpected variables: \").concat(stringifyForDisplay(operation.variables), \"\\n\").concat(unmatchedVars.length > 0\n ? \"\\nFailed to match \".concat(unmatchedVars.length, \" mock\").concat(unmatchedVars.length === 1 ? \"\" : \"s\", \" for this query. The mocked response had the following variables:\\n\").concat(unmatchedVars.map(function (d) { return \" \".concat(stringifyForDisplay(d)); }).join(\"\\n\"), \"\\n\")\n : \"\"));\n if (this.showWarnings) {\n console.warn(configError.message +\n \"\\nThis typically indicates a configuration error in your mocks \" +\n \"setup, usually due to a typo or mismatched variable.\");\n }\n }\n else {\n mockedResponses.splice(responseIndex, 1);\n var newData = response.newData;\n if (newData) {\n response.result = newData(operation.variables);\n mockedResponses.push(response);\n }\n if (!response.result && !response.error) {\n configError = new Error(\"Mocked response should contain either result or error: \".concat(key));\n }\n }\n return new Observable(function (observer) {\n var timer = setTimeout(function () {\n if (configError) {\n try {\n if (_this.onError(configError, observer) !== false) {\n throw configError;\n }\n }\n catch (error) {\n observer.error(error);\n }\n }\n else if (response) {\n if (response.error) {\n observer.error(response.error);\n }\n else {\n if (response.result) {\n observer.next(typeof response.result === \"function\"\n ? response.result(operation.variables)\n : response.result);\n }\n observer.complete();\n }\n }\n }, (response && response.delay) || 0);\n return function () {\n clearTimeout(timer);\n };\n });\n };\n MockLink.prototype.normalizeMockedResponse = function (mockedResponse) {\n var newMockedResponse = cloneDeep(mockedResponse);\n var queryWithoutConnection = removeConnectionDirectiveFromDocument(newMockedResponse.request.query);\n invariant(queryWithoutConnection, 62);\n newMockedResponse.request.query = queryWithoutConnection;\n var query = removeClientSetsFromDocument(newMockedResponse.request.query);\n if (query) {\n newMockedResponse.request.query = query;\n }\n this.normalizeVariableMatching(newMockedResponse);\n return newMockedResponse;\n };\n MockLink.prototype.normalizeVariableMatching = function (mockedResponse) {\n var variables = mockedResponse.request.variables;\n if (mockedResponse.variableMatcher && variables) {\n throw new Error(\"Mocked response should contain either variableMatcher or request.variables\");\n }\n if (!mockedResponse.variableMatcher) {\n mockedResponse.variableMatcher = function (vars) {\n var requestVariables = vars || {};\n var mockedResponseVariables = variables || {};\n return equal(requestVariables, mockedResponseVariables);\n };\n }\n };\n return MockLink;\n}(ApolloLink));\nexport { MockLink };\nexport function mockSingleLink() {\n var mockedResponses = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n mockedResponses[_i] = arguments[_i];\n }\n var maybeTypename = mockedResponses[mockedResponses.length - 1];\n var mocks = mockedResponses.slice(0, mockedResponses.length - 1);\n if (typeof maybeTypename !== \"boolean\") {\n mocks = mockedResponses;\n maybeTypename = true;\n }\n return new MockLink(mocks, maybeTypename);\n}\n//# sourceMappingURL=mockLink.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"../../../utilities/index.js\";\nimport { ApolloLink } from \"../../../link/core/index.js\";\nvar MockSubscriptionLink = (function (_super) {\n __extends(MockSubscriptionLink, _super);\n function MockSubscriptionLink() {\n var _this = _super.call(this) || this;\n _this.unsubscribers = [];\n _this.setups = [];\n _this.observers = [];\n return _this;\n }\n MockSubscriptionLink.prototype.request = function (operation) {\n var _this = this;\n this.operation = operation;\n return new Observable(function (observer) {\n _this.setups.forEach(function (x) { return x(); });\n _this.observers.push(observer);\n return function () {\n _this.unsubscribers.forEach(function (x) { return x(); });\n };\n });\n };\n MockSubscriptionLink.prototype.simulateResult = function (result, complete) {\n var _this = this;\n if (complete === void 0) { complete = false; }\n setTimeout(function () {\n var observers = _this.observers;\n if (!observers.length)\n throw new Error(\"subscription torn down\");\n observers.forEach(function (observer) {\n if (result.result && observer.next)\n observer.next(result.result);\n if (result.error && observer.error)\n observer.error(result.error);\n if (complete && observer.complete)\n observer.complete();\n });\n }, result.delay || 0);\n };\n MockSubscriptionLink.prototype.simulateComplete = function () {\n var observers = this.observers;\n if (!observers.length)\n throw new Error(\"subscription torn down\");\n observers.forEach(function (observer) {\n if (observer.complete)\n observer.complete();\n });\n };\n MockSubscriptionLink.prototype.onSetup = function (listener) {\n this.setups = this.setups.concat([listener]);\n };\n MockSubscriptionLink.prototype.onUnsubscribe = function (listener) {\n this.unsubscribers = this.unsubscribers.concat([listener]);\n };\n return MockSubscriptionLink;\n}(ApolloLink));\nexport { MockSubscriptionLink };\nexport function mockObservableLink() {\n return new MockSubscriptionLink();\n}\n//# sourceMappingURL=mockSubscriptionLink.js.map","import { ApolloClient } from \"../../../core/index.js\";\nimport { InMemoryCache } from \"../../../cache/index.js\";\nimport { mockSingleLink } from \"./mockLink.js\";\nexport function createMockClient(data, query, variables) {\n if (variables === void 0) { variables = {}; }\n return new ApolloClient({\n link: mockSingleLink({\n request: { query: query, variables: variables },\n result: { data: data },\n }).setOnError(function (error) {\n throw error;\n }),\n cache: new InMemoryCache({ addTypename: false }),\n });\n}\n//# sourceMappingURL=mockClient.js.map","import { asyncMap } from \"../../utilities/index.js\";\nexport default function subscribeAndCount(reject, observable, cb) {\n var queue = Promise.resolve();\n var handleCount = 0;\n var subscription = asyncMap(observable, function (result) {\n return (queue = queue\n .then(function () {\n return cb(++handleCount, result);\n })\n .catch(error));\n }).subscribe({ error: error });\n function error(e) {\n subscription.unsubscribe();\n reject(e);\n }\n return subscription;\n}\n//# sourceMappingURL=subscribeAndCount.js.map","function wrap(key) {\n return function (message, callback, timeout) {\n return (key ? it[key] : it)(message, function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n return callback.call(_this, resolve, reject);\n });\n }, timeout);\n };\n}\nvar wrappedIt = wrap();\nexport var itAsync = Object.assign(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return wrappedIt.apply(this, args);\n}, {\n only: wrap(\"only\"),\n skip: wrap(\"skip\"),\n todo: wrap(\"todo\"),\n});\n//# sourceMappingURL=itAsync.js.map","import { __awaiter, __generator } from \"tslib\";\nexport function wait(ms) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, new Promise(function (resolve) { return setTimeout(resolve, ms); })];\n });\n });\n}\nexport function tick() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, wait(0)];\n });\n });\n}\n//# sourceMappingURL=wait.js.map","function wrapTestFunction(fn, consoleMethodName) {\n return function () {\n var _this = this;\n var args = arguments;\n var spy = jest.spyOn(console, consoleMethodName);\n spy.mockImplementation(function () { });\n return new Promise(function (resolve) {\n resolve(fn === null || fn === void 0 ? void 0 : fn.apply(_this, args));\n }).finally(function () {\n expect(spy).toMatchSnapshot();\n spy.mockReset();\n });\n };\n}\nexport function withErrorSpy(it) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args[1] = wrapTestFunction(args[1], \"error\");\n return it.apply(void 0, args);\n}\nexport function withWarningSpy(it) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args[1] = wrapTestFunction(args[1], \"warn\");\n return it.apply(void 0, args);\n}\nexport function withLogSpy(it) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args[1] = wrapTestFunction(args[1], \"log\");\n return it.apply(void 0, args);\n}\n//# sourceMappingURL=withConsoleSpy.js.map"],"names":["print","addTypenameToDocument","__extends","equal","stringifyForDisplay","Observable","cloneDeep","removeConnectionDirectiveFromDocument","invariant","removeClientSetsFromDocument","ApolloLink","ApolloClient","InMemoryCache","asyncMap","__awaiter","__generator"],"mappings":"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"}
1
+ {"version":3,"file":"core.cjs","sources":["mocking/mockLink.js","mocking/mockSubscriptionLink.js","mocking/mockClient.js","subscribeAndCount.js","itAsync.js","wait.js","withConsoleSpy.js"],"sourcesContent":["import { __extends } from \"tslib\";\nimport { invariant } from \"../../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloLink } from \"../../../link/core/index.js\";\nimport { Observable, addTypenameToDocument, removeClientSetsFromDocument, removeConnectionDirectiveFromDocument, cloneDeep, stringifyForDisplay, print, } from \"../../../utilities/index.js\";\nfunction requestToKey(request, addTypename) {\n var queryString = request.query &&\n print(addTypename ? addTypenameToDocument(request.query) : request.query);\n var requestKey = { query: queryString };\n return JSON.stringify(requestKey);\n}\nvar MockLink = (function (_super) {\n __extends(MockLink, _super);\n function MockLink(mockedResponses, addTypename, options) {\n if (addTypename === void 0) { addTypename = true; }\n if (options === void 0) { options = Object.create(null); }\n var _a;\n var _this = _super.call(this) || this;\n _this.addTypename = true;\n _this.showWarnings = true;\n _this.mockedResponsesByKey = {};\n _this.addTypename = addTypename;\n _this.showWarnings = (_a = options.showWarnings) !== null && _a !== void 0 ? _a : true;\n if (mockedResponses) {\n mockedResponses.forEach(function (mockedResponse) {\n _this.addMockedResponse(mockedResponse);\n });\n }\n return _this;\n }\n MockLink.prototype.addMockedResponse = function (mockedResponse) {\n var normalizedMockedResponse = this.normalizeMockedResponse(mockedResponse);\n var key = requestToKey(normalizedMockedResponse.request, this.addTypename);\n var mockedResponses = this.mockedResponsesByKey[key];\n if (!mockedResponses) {\n mockedResponses = [];\n this.mockedResponsesByKey[key] = mockedResponses;\n }\n mockedResponses.push(normalizedMockedResponse);\n };\n MockLink.prototype.request = function (operation) {\n var _this = this;\n this.operation = operation;\n var key = requestToKey(operation, this.addTypename);\n var unmatchedVars = [];\n var requestVariables = operation.variables || {};\n var mockedResponses = this.mockedResponsesByKey[key];\n var responseIndex = mockedResponses\n ? mockedResponses.findIndex(function (res, index) {\n var mockedResponseVars = res.request.variables || {};\n if (equal(requestVariables, mockedResponseVars)) {\n return true;\n }\n if (res.variableMatcher && res.variableMatcher(operation.variables)) {\n return true;\n }\n unmatchedVars.push(mockedResponseVars);\n return false;\n })\n : -1;\n var response = responseIndex >= 0 ? mockedResponses[responseIndex] : void 0;\n var configError;\n if (!response) {\n configError = new Error(\"No more mocked responses for the query: \".concat(print(operation.query), \"\\nExpected variables: \").concat(stringifyForDisplay(operation.variables), \"\\n\").concat(unmatchedVars.length > 0\n ? \"\\nFailed to match \".concat(unmatchedVars.length, \" mock\").concat(unmatchedVars.length === 1 ? \"\" : \"s\", \" for this query. The mocked response had the following variables:\\n\").concat(unmatchedVars.map(function (d) { return \" \".concat(stringifyForDisplay(d)); }).join(\"\\n\"), \"\\n\")\n : \"\"));\n if (this.showWarnings) {\n console.warn(configError.message +\n \"\\nThis typically indicates a configuration error in your mocks \" +\n \"setup, usually due to a typo or mismatched variable.\");\n }\n }\n else {\n if (response.maxUsageCount > 1) {\n response.maxUsageCount--;\n }\n else {\n mockedResponses.splice(responseIndex, 1);\n }\n var newData = response.newData;\n if (newData) {\n response.result = newData(operation.variables);\n mockedResponses.push(response);\n }\n if (!response.result && !response.error) {\n configError = new Error(\"Mocked response should contain either result or error: \".concat(key));\n }\n }\n return new Observable(function (observer) {\n var timer = setTimeout(function () {\n if (configError) {\n try {\n if (_this.onError(configError, observer) !== false) {\n throw configError;\n }\n }\n catch (error) {\n observer.error(error);\n }\n }\n else if (response) {\n if (response.error) {\n observer.error(response.error);\n }\n else {\n if (response.result) {\n observer.next(typeof response.result === \"function\"\n ? response.result(operation.variables)\n : response.result);\n }\n observer.complete();\n }\n }\n }, (response && response.delay) || 0);\n return function () {\n clearTimeout(timer);\n };\n });\n };\n MockLink.prototype.normalizeMockedResponse = function (mockedResponse) {\n var _a;\n var newMockedResponse = cloneDeep(mockedResponse);\n var queryWithoutConnection = removeConnectionDirectiveFromDocument(newMockedResponse.request.query);\n invariant(queryWithoutConnection, 62);\n newMockedResponse.request.query = queryWithoutConnection;\n var query = removeClientSetsFromDocument(newMockedResponse.request.query);\n if (query) {\n newMockedResponse.request.query = query;\n }\n mockedResponse.maxUsageCount = (_a = mockedResponse.maxUsageCount) !== null && _a !== void 0 ? _a : 1;\n invariant(mockedResponse.maxUsageCount > 0, 63, mockedResponse.maxUsageCount);\n this.normalizeVariableMatching(newMockedResponse);\n return newMockedResponse;\n };\n MockLink.prototype.normalizeVariableMatching = function (mockedResponse) {\n var variables = mockedResponse.request.variables;\n if (mockedResponse.variableMatcher && variables) {\n throw new Error(\"Mocked response should contain either variableMatcher or request.variables\");\n }\n if (!mockedResponse.variableMatcher) {\n mockedResponse.variableMatcher = function (vars) {\n var requestVariables = vars || {};\n var mockedResponseVariables = variables || {};\n return equal(requestVariables, mockedResponseVariables);\n };\n }\n };\n return MockLink;\n}(ApolloLink));\nexport { MockLink };\nexport function mockSingleLink() {\n var mockedResponses = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n mockedResponses[_i] = arguments[_i];\n }\n var maybeTypename = mockedResponses[mockedResponses.length - 1];\n var mocks = mockedResponses.slice(0, mockedResponses.length - 1);\n if (typeof maybeTypename !== \"boolean\") {\n mocks = mockedResponses;\n maybeTypename = true;\n }\n return new MockLink(mocks, maybeTypename);\n}\n//# sourceMappingURL=mockLink.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"../../../utilities/index.js\";\nimport { ApolloLink } from \"../../../link/core/index.js\";\nvar MockSubscriptionLink = (function (_super) {\n __extends(MockSubscriptionLink, _super);\n function MockSubscriptionLink() {\n var _this = _super.call(this) || this;\n _this.unsubscribers = [];\n _this.setups = [];\n _this.observers = [];\n return _this;\n }\n MockSubscriptionLink.prototype.request = function (operation) {\n var _this = this;\n this.operation = operation;\n return new Observable(function (observer) {\n _this.setups.forEach(function (x) { return x(); });\n _this.observers.push(observer);\n return function () {\n _this.unsubscribers.forEach(function (x) { return x(); });\n };\n });\n };\n MockSubscriptionLink.prototype.simulateResult = function (result, complete) {\n var _this = this;\n if (complete === void 0) { complete = false; }\n setTimeout(function () {\n var observers = _this.observers;\n if (!observers.length)\n throw new Error(\"subscription torn down\");\n observers.forEach(function (observer) {\n if (result.result && observer.next)\n observer.next(result.result);\n if (result.error && observer.error)\n observer.error(result.error);\n if (complete && observer.complete)\n observer.complete();\n });\n }, result.delay || 0);\n };\n MockSubscriptionLink.prototype.simulateComplete = function () {\n var observers = this.observers;\n if (!observers.length)\n throw new Error(\"subscription torn down\");\n observers.forEach(function (observer) {\n if (observer.complete)\n observer.complete();\n });\n };\n MockSubscriptionLink.prototype.onSetup = function (listener) {\n this.setups = this.setups.concat([listener]);\n };\n MockSubscriptionLink.prototype.onUnsubscribe = function (listener) {\n this.unsubscribers = this.unsubscribers.concat([listener]);\n };\n return MockSubscriptionLink;\n}(ApolloLink));\nexport { MockSubscriptionLink };\nexport function mockObservableLink() {\n return new MockSubscriptionLink();\n}\n//# sourceMappingURL=mockSubscriptionLink.js.map","import { ApolloClient } from \"../../../core/index.js\";\nimport { InMemoryCache } from \"../../../cache/index.js\";\nimport { mockSingleLink } from \"./mockLink.js\";\nexport function createMockClient(data, query, variables) {\n if (variables === void 0) { variables = {}; }\n return new ApolloClient({\n link: mockSingleLink({\n request: { query: query, variables: variables },\n result: { data: data },\n }).setOnError(function (error) {\n throw error;\n }),\n cache: new InMemoryCache({ addTypename: false }),\n });\n}\n//# sourceMappingURL=mockClient.js.map","import { asyncMap } from \"../../utilities/index.js\";\nexport default function subscribeAndCount(reject, observable, cb) {\n var queue = Promise.resolve();\n var handleCount = 0;\n var subscription = asyncMap(observable, function (result) {\n return (queue = queue\n .then(function () {\n return cb(++handleCount, result);\n })\n .catch(error));\n }).subscribe({ error: error });\n function error(e) {\n subscription.unsubscribe();\n reject(e);\n }\n return subscription;\n}\n//# sourceMappingURL=subscribeAndCount.js.map","function wrap(key) {\n return function (message, callback, timeout) {\n return (key ? it[key] : it)(message, function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n return callback.call(_this, resolve, reject);\n });\n }, timeout);\n };\n}\nvar wrappedIt = wrap();\nexport var itAsync = Object.assign(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return wrappedIt.apply(this, args);\n}, {\n only: wrap(\"only\"),\n skip: wrap(\"skip\"),\n todo: wrap(\"todo\"),\n});\n//# sourceMappingURL=itAsync.js.map","import { __awaiter, __generator } from \"tslib\";\nexport function wait(ms) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, new Promise(function (resolve) { return setTimeout(resolve, ms); })];\n });\n });\n}\nexport function tick() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2, wait(0)];\n });\n });\n}\n//# sourceMappingURL=wait.js.map","function wrapTestFunction(fn, consoleMethodName) {\n return function () {\n var _this = this;\n var args = arguments;\n var spy = jest.spyOn(console, consoleMethodName);\n spy.mockImplementation(function () { });\n return new Promise(function (resolve) {\n resolve(fn === null || fn === void 0 ? void 0 : fn.apply(_this, args));\n }).finally(function () {\n expect(spy).toMatchSnapshot();\n spy.mockReset();\n });\n };\n}\nexport function withErrorSpy(it) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args[1] = wrapTestFunction(args[1], \"error\");\n return it.apply(void 0, args);\n}\nexport function withWarningSpy(it) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args[1] = wrapTestFunction(args[1], \"warn\");\n return it.apply(void 0, args);\n}\nexport function withLogSpy(it) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args[1] = wrapTestFunction(args[1], \"log\");\n return it.apply(void 0, args);\n}\n//# sourceMappingURL=withConsoleSpy.js.map"],"names":["print","addTypenameToDocument","__extends","equal","stringifyForDisplay","Observable","cloneDeep","removeConnectionDirectiveFromDocument","invariant","removeClientSetsFromDocument","ApolloLink","ApolloClient","InMemoryCache","asyncMap","__awaiter","__generator"],"mappings":"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"}
@@ -78,7 +78,12 @@ var MockLink = (function (_super) {
78
78
  }
79
79
  }
80
80
  else {
81
- mockedResponses.splice(responseIndex, 1);
81
+ if (response.maxUsageCount > 1) {
82
+ response.maxUsageCount--;
83
+ }
84
+ else {
85
+ mockedResponses.splice(responseIndex, 1);
86
+ }
82
87
  var newData = response.newData;
83
88
  if (newData) {
84
89
  response.result = newData(operation.variables);
@@ -120,6 +125,7 @@ var MockLink = (function (_super) {
120
125
  });
121
126
  };
122
127
  MockLink.prototype.normalizeMockedResponse = function (mockedResponse) {
128
+ var _a;
123
129
  var newMockedResponse = utilities.cloneDeep(mockedResponse);
124
130
  var queryWithoutConnection = utilities.removeConnectionDirectiveFromDocument(newMockedResponse.request.query);
125
131
  globals.invariant(queryWithoutConnection, 62);
@@ -128,6 +134,8 @@ var MockLink = (function (_super) {
128
134
  if (query) {
129
135
  newMockedResponse.request.query = query;
130
136
  }
137
+ mockedResponse.maxUsageCount = (_a = mockedResponse.maxUsageCount) !== null && _a !== void 0 ? _a : 1;
138
+ globals.invariant(mockedResponse.maxUsageCount > 0, 63, mockedResponse.maxUsageCount);
131
139
  this.normalizeVariableMatching(newMockedResponse);
132
140
  return newMockedResponse;
133
141
  };
@@ -5,6 +5,7 @@ export type ResultFunction<T, V = Record<string, any>> = (variables: V) => T;
5
5
  export type VariableMatcher<V = Record<string, any>> = (variables: V) => boolean;
6
6
  export interface MockedResponse<TData = Record<string, any>, TVariables = Record<string, any>> {
7
7
  request: GraphQLRequest<TVariables>;
8
+ maxUsageCount?: number;
8
9
  result?: FetchResult<TData> | ResultFunction<FetchResult<TData>, TVariables>;
9
10
  error?: Error;
10
11
  delay?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"mockLink.d.ts","sourceRoot":"","sources":["../../../../src/testing/core/mocking/mockLink.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EACL,UAAU,EAOX,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7E,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CACrD,SAAS,EAAE,CAAC,KACT,OAAO,CAAC;AAEb,MAAM,WAAW,cAAc,CAC7B,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEhC,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7E,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAUD,qBAAa,QAAS,SAAQ,UAAU;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAQ;IAC5B,YAAY,EAAE,OAAO,CAAQ;IACpC,OAAO,CAAC,oBAAoB,CAA2C;gBAGrE,eAAe,EAAE,aAAa,CAAC,cAAc,CAAC,EAC9C,WAAW,GAAE,OAAc,EAC3B,OAAO,GAAE,eAAqC;IAazC,iBAAiB,CAAC,cAAc,EAAE,cAAc;IAehD,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;IAwGpE,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,yBAAyB;CAgBlC;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAKD,wBAAgB,cAAc,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAY7E"}
1
+ {"version":3,"file":"mockLink.d.ts","sourceRoot":"","sources":["../../../../src/testing/core/mocking/mockLink.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EACL,UAAU,EAOX,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7E,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CACrD,SAAS,EAAE,CAAC,KACT,OAAO,CAAC;AAEb,MAAM,WAAW,cAAc,CAC7B,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEhC,OAAO,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7E,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAUD,qBAAa,QAAS,SAAQ,UAAU;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAQ;IAC5B,YAAY,EAAE,OAAO,CAAQ;IACpC,OAAO,CAAC,oBAAoB,CAA2C;gBAGrE,eAAe,EAAE,aAAa,CAAC,cAAc,CAAC,EAC9C,WAAW,GAAE,OAAc,EAC3B,OAAO,GAAE,eAAqC;IAazC,iBAAiB,CAAC,cAAc,EAAE,cAAc;IAehD,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI;IA2GpE,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,yBAAyB;CAgBlC;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAKD,wBAAgB,cAAc,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,CAY7E"}
@@ -71,7 +71,12 @@ var MockLink = (function (_super) {
71
71
  }
72
72
  }
73
73
  else {
74
- mockedResponses.splice(responseIndex, 1);
74
+ if (response.maxUsageCount > 1) {
75
+ response.maxUsageCount--;
76
+ }
77
+ else {
78
+ mockedResponses.splice(responseIndex, 1);
79
+ }
75
80
  var newData = response.newData;
76
81
  if (newData) {
77
82
  response.result = newData(operation.variables);
@@ -113,6 +118,7 @@ var MockLink = (function (_super) {
113
118
  });
114
119
  };
115
120
  MockLink.prototype.normalizeMockedResponse = function (mockedResponse) {
121
+ var _a;
116
122
  var newMockedResponse = cloneDeep(mockedResponse);
117
123
  var queryWithoutConnection = removeConnectionDirectiveFromDocument(newMockedResponse.request.query);
118
124
  invariant(queryWithoutConnection, 62);
@@ -121,6 +127,8 @@ var MockLink = (function (_super) {
121
127
  if (query) {
122
128
  newMockedResponse.request.query = query;
123
129
  }
130
+ mockedResponse.maxUsageCount = (_a = mockedResponse.maxUsageCount) !== null && _a !== void 0 ? _a : 1;
131
+ invariant(mockedResponse.maxUsageCount > 0, 63, mockedResponse.maxUsageCount);
124
132
  this.normalizeVariableMatching(newMockedResponse);
125
133
  return newMockedResponse;
126
134
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mockLink.js","sourceRoot":"","sources":["../../../../src/testing/core/mocking/mockLink.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from \"../../../utilities/globals/index.js\";\n\nimport { equal } from \"@wry/equality\";\n\nimport type {\n Operation,\n GraphQLRequest,\n FetchResult,\n} from \"../../../link/core/index.js\";\nimport { ApolloLink } from \"../../../link/core/index.js\";\n\nimport {\n Observable,\n addTypenameToDocument,\n removeClientSetsFromDocument,\n removeConnectionDirectiveFromDocument,\n cloneDeep,\n stringifyForDisplay,\n print,\n} from \"../../../utilities/index.js\";\n\nexport type ResultFunction<T, V = Record<string, any>> = (variables: V) => T;\n\nexport type VariableMatcher<V = Record<string, any>> = (\n variables: V\n) => boolean;\n\nexport interface MockedResponse<\n TData = Record<string, any>,\n TVariables = Record<string, any>,\n> {\n request: GraphQLRequest<TVariables>;\n result?: FetchResult<TData> | ResultFunction<FetchResult<TData>, TVariables>;\n error?: Error;\n delay?: number;\n variableMatcher?: VariableMatcher<TVariables>;\n newData?: ResultFunction<FetchResult>;\n}\n\nexport interface MockLinkOptions {\n showWarnings?: boolean;\n}\n\nfunction requestToKey(request: GraphQLRequest, addTypename: Boolean): string {\n const queryString =\n request.query &&\n print(addTypename ? addTypenameToDocument(request.query) : request.query);\n const requestKey = { query: queryString };\n return JSON.stringify(requestKey);\n}\n\nexport class MockLink extends ApolloLink {\n public operation: Operation;\n public addTypename: Boolean = true;\n public showWarnings: boolean = true;\n private mockedResponsesByKey: { [key: string]: MockedResponse[] } = {};\n\n constructor(\n mockedResponses: ReadonlyArray<MockedResponse>,\n addTypename: Boolean = true,\n options: MockLinkOptions = Object.create(null)\n ) {\n super();\n this.addTypename = addTypename;\n this.showWarnings = options.showWarnings ?? true;\n\n if (mockedResponses) {\n mockedResponses.forEach((mockedResponse) => {\n this.addMockedResponse(mockedResponse);\n });\n }\n }\n\n public addMockedResponse(mockedResponse: MockedResponse) {\n const normalizedMockedResponse =\n this.normalizeMockedResponse(mockedResponse);\n const key = requestToKey(\n normalizedMockedResponse.request,\n this.addTypename\n );\n let mockedResponses = this.mockedResponsesByKey[key];\n if (!mockedResponses) {\n mockedResponses = [];\n this.mockedResponsesByKey[key] = mockedResponses;\n }\n mockedResponses.push(normalizedMockedResponse);\n }\n\n public request(operation: Operation): Observable<FetchResult> | null {\n this.operation = operation;\n const key = requestToKey(operation, this.addTypename);\n const unmatchedVars: Array<Record<string, any>> = [];\n const requestVariables = operation.variables || {};\n const mockedResponses = this.mockedResponsesByKey[key];\n const responseIndex = mockedResponses\n ? mockedResponses.findIndex((res, index) => {\n const mockedResponseVars = res.request.variables || {};\n if (equal(requestVariables, mockedResponseVars)) {\n return true;\n }\n if (res.variableMatcher && res.variableMatcher(operation.variables)) {\n return true;\n }\n unmatchedVars.push(mockedResponseVars);\n return false;\n })\n : -1;\n\n const response =\n responseIndex >= 0 ? mockedResponses[responseIndex] : void 0;\n\n let configError: Error;\n\n if (!response) {\n configError = new Error(\n `No more mocked responses for the query: ${print(operation.query)}\nExpected variables: ${stringifyForDisplay(operation.variables)}\n${\n unmatchedVars.length > 0\n ? `\nFailed to match ${unmatchedVars.length} mock${\n unmatchedVars.length === 1 ? \"\" : \"s\"\n } for this query. The mocked response had the following variables:\n${unmatchedVars.map((d) => ` ${stringifyForDisplay(d)}`).join(\"\\n\")}\n`\n : \"\"\n}`\n );\n\n if (this.showWarnings) {\n console.warn(\n configError.message +\n \"\\nThis typically indicates a configuration error in your mocks \" +\n \"setup, usually due to a typo or mismatched variable.\"\n );\n }\n } else {\n mockedResponses.splice(responseIndex, 1);\n\n const { newData } = response;\n if (newData) {\n response.result = newData(operation.variables);\n mockedResponses.push(response);\n }\n\n if (!response.result && !response.error) {\n configError = new Error(\n `Mocked response should contain either result or error: ${key}`\n );\n }\n }\n\n return new Observable((observer) => {\n const timer = setTimeout(\n () => {\n if (configError) {\n try {\n // The onError function can return false to indicate that\n // configError need not be passed to observer.error. For\n // example, the default implementation of onError calls\n // observer.error(configError) and then returns false to\n // prevent this extra (harmless) observer.error call.\n if (this.onError(configError, observer) !== false) {\n throw configError;\n }\n } catch (error) {\n observer.error(error);\n }\n } else if (response) {\n if (response.error) {\n observer.error(response.error);\n } else {\n if (response.result) {\n observer.next(\n typeof response.result === \"function\"\n ? response.result(operation.variables)\n : response.result\n );\n }\n observer.complete();\n }\n }\n },\n (response && response.delay) || 0\n );\n\n return () => {\n clearTimeout(timer);\n };\n });\n }\n\n private normalizeMockedResponse(\n mockedResponse: MockedResponse\n ): MockedResponse {\n const newMockedResponse = cloneDeep(mockedResponse);\n const queryWithoutConnection = removeConnectionDirectiveFromDocument(\n newMockedResponse.request.query\n );\n invariant(queryWithoutConnection, \"query is required\");\n newMockedResponse.request.query = queryWithoutConnection!;\n const query = removeClientSetsFromDocument(newMockedResponse.request.query);\n if (query) {\n newMockedResponse.request.query = query;\n }\n this.normalizeVariableMatching(newMockedResponse);\n return newMockedResponse;\n }\n\n private normalizeVariableMatching(mockedResponse: MockedResponse) {\n const variables = mockedResponse.request.variables;\n if (mockedResponse.variableMatcher && variables) {\n throw new Error(\n \"Mocked response should contain either variableMatcher or request.variables\"\n );\n }\n\n if (!mockedResponse.variableMatcher) {\n mockedResponse.variableMatcher = (vars) => {\n const requestVariables = vars || {};\n const mockedResponseVariables = variables || {};\n return equal(requestVariables, mockedResponseVariables);\n };\n }\n }\n}\n\nexport interface MockApolloLink extends ApolloLink {\n operation?: Operation;\n}\n\n// Pass in multiple mocked responses, so that you can test flows that end up\n// making multiple queries to the server.\n// NOTE: The last arg can optionally be an `addTypename` arg.\nexport function mockSingleLink(...mockedResponses: Array<any>): MockApolloLink {\n // To pull off the potential typename. If this isn't a boolean, we'll just\n // set it true later.\n let maybeTypename = mockedResponses[mockedResponses.length - 1];\n let mocks = mockedResponses.slice(0, mockedResponses.length - 1);\n\n if (typeof maybeTypename !== \"boolean\") {\n mocks = mockedResponses;\n maybeTypename = true;\n }\n\n return new MockLink(mocks, maybeTypename);\n}\n"]}
1
+ {"version":3,"file":"mockLink.js","sourceRoot":"","sources":["../../../../src/testing/core/mocking/mockLink.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAOtC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,qCAAqC,EACrC,SAAS,EACT,mBAAmB,EACnB,KAAK,GACN,MAAM,6BAA6B,CAAC;AAyBrC,SAAS,YAAY,CAAC,OAAuB,EAAE,WAAoB;IACjE,IAAM,WAAW,GACf,OAAO,CAAC,KAAK;QACb,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5E,IAAM,UAAU,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;IAA8B,4BAAU;IAMtC,kBACE,eAA8C,EAC9C,WAA2B,EAC3B,OAA8C;QAD9C,4BAAA,EAAA,kBAA2B;QAC3B,wBAAA,EAAA,UAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;QAHhD,YAKE,iBAAO,SASR;QAlBM,iBAAW,GAAY,IAAI,CAAC;QAC5B,kBAAY,GAAY,IAAI,CAAC;QAC5B,0BAAoB,GAAwC,EAAE,CAAC;QAQrE,KAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,KAAI,CAAC,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,IAAI,CAAC;QAEjD,IAAI,eAAe,EAAE;YACnB,eAAe,CAAC,OAAO,CAAC,UAAC,cAAc;gBACrC,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;SACJ;;IACH,CAAC;IAEM,oCAAiB,GAAxB,UAAyB,cAA8B;QACrD,IAAM,wBAAwB,GAC5B,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAM,GAAG,GAAG,YAAY,CACtB,wBAAwB,CAAC,OAAO,EAChC,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE;YACpB,eAAe,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;SAClD;QACD,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAEM,0BAAO,GAAd,UAAe,SAAoB;QAAnC,iBAyGC;QAxGC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,IAAM,aAAa,GAA+B,EAAE,CAAC;QACrD,IAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;QACnD,IAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACvD,IAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,UAAC,GAAG,EAAE,KAAK;gBACnC,IAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;gBACvD,IAAI,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC;iBACb;gBACD,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;oBACnE,OAAO,IAAI,CAAC;iBACb;gBACD,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACvC,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEP,IAAM,QAAQ,GACZ,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,WAAkB,CAAC;QAEvB,IAAI,CAAC,QAAQ,EAAE;YACb,WAAW,GAAG,IAAI,KAAK,CACrB,kDAA2C,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,mCACnD,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,eAE5D,aAAa,CAAC,MAAM,GAAG,CAAC;gBACtB,CAAC,CAAC,4BACY,aAAa,CAAC,MAAM,kBAC9B,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,gFAE3C,aAAa,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,YAAK,mBAAmB,CAAC,CAAC,CAAC,CAAE,EAA7B,CAA6B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OACnE;gBACG,CAAC,CAAC,EAAE,CACN,CACK,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO,CAAC,IAAI,CACV,WAAW,CAAC,OAAO;oBACjB,iEAAiE;oBACjE,sDAAsD,CACzD,CAAC;aACH;SACF;aAAM;YACL,IAAI,QAAQ,CAAC,aAAc,GAAG,CAAC,EAAE;gBAC/B,QAAQ,CAAC,aAAc,EAAE,CAAC;aAC3B;iBAAM;gBACL,eAAe,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;aAC1C;YACO,IAAA,OAAO,GAAK,QAAQ,QAAb,CAAc;YAC7B,IAAI,OAAO,EAAE;gBACX,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC/C,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACvC,WAAW,GAAG,IAAI,KAAK,CACrB,iEAA0D,GAAG,CAAE,CAChE,CAAC;aACH;SACF;QAED,OAAO,IAAI,UAAU,CAAC,UAAC,QAAQ;YAC7B,IAAM,KAAK,GAAG,UAAU,CACtB;gBACE,IAAI,WAAW,EAAE;oBACf,IAAI;wBAMF,IAAI,KAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;4BACjD,MAAM,WAAW,CAAC;yBACnB;qBACF;oBAAC,OAAO,KAAK,EAAE;wBACd,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBACvB;iBACF;qBAAM,IAAI,QAAQ,EAAE;oBACnB,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAClB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBAChC;yBAAM;wBACL,IAAI,QAAQ,CAAC,MAAM,EAAE;4BACnB,QAAQ,CAAC,IAAI,CACX,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU;gCACnC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;gCACtC,CAAC,CAAC,QAAQ,CAAC,MAAM,CACpB,CAAC;yBACH;wBACD,QAAQ,CAAC,QAAQ,EAAE,CAAC;qBACrB;iBACF;YACH,CAAC,EACD,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAClC,CAAC;YAEF,OAAO;gBACL,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,0CAAuB,GAA/B,UACE,cAA8B;;QAE9B,IAAM,iBAAiB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QACpD,IAAM,sBAAsB,GAAG,qCAAqC,CAClE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAChC,CAAC;QACF,SAAS,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC;QACvD,iBAAiB,CAAC,OAAO,CAAC,KAAK,GAAG,sBAAuB,CAAC;QAC1D,IAAM,KAAK,GAAG,4BAA4B,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,KAAK,EAAE;YACT,iBAAiB,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;SACzC;QAED,cAAc,CAAC,aAAa,GAAG,MAAA,cAAc,CAAC,aAAa,mCAAI,CAAC,CAAC;QACjE,SAAS,CACP,cAAc,CAAC,aAAa,GAAG,CAAC,EAChC,8DAA8D,EAC9D,cAAc,CAAC,aAAa,CAC7B,CAAC;QAEF,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;QAClD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,4CAAyB,GAAjC,UAAkC,cAA8B;QAC9D,IAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;QACnD,IAAI,cAAc,CAAC,eAAe,IAAI,SAAS,EAAE;YAC/C,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;SACH;QAED,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;YACnC,cAAc,CAAC,eAAe,GAAG,UAAC,IAAI;gBACpC,IAAM,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC;gBACpC,IAAM,uBAAuB,GAAG,SAAS,IAAI,EAAE,CAAC;gBAChD,OAAO,KAAK,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;YAC1D,CAAC,CAAC;SACH;IACH,CAAC;IACH,eAAC;AAAD,CAAC,AAzLD,CAA8B,UAAU,GAyLvC;;AASD,MAAM,UAAU,cAAc;IAAC,yBAA8B;SAA9B,UAA8B,EAA9B,qBAA8B,EAA9B,IAA8B;QAA9B,oCAA8B;;IAG3D,IAAI,aAAa,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEjE,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE;QACtC,KAAK,GAAG,eAAe,CAAC;QACxB,aAAa,GAAG,IAAI,CAAC;KACtB;IAED,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import { invariant } from \"../../../utilities/globals/index.js\";\n\nimport { equal } from \"@wry/equality\";\n\nimport type {\n Operation,\n GraphQLRequest,\n FetchResult,\n} from \"../../../link/core/index.js\";\nimport { ApolloLink } from \"../../../link/core/index.js\";\n\nimport {\n Observable,\n addTypenameToDocument,\n removeClientSetsFromDocument,\n removeConnectionDirectiveFromDocument,\n cloneDeep,\n stringifyForDisplay,\n print,\n} from \"../../../utilities/index.js\";\n\nexport type ResultFunction<T, V = Record<string, any>> = (variables: V) => T;\n\nexport type VariableMatcher<V = Record<string, any>> = (\n variables: V\n) => boolean;\n\nexport interface MockedResponse<\n TData = Record<string, any>,\n TVariables = Record<string, any>,\n> {\n request: GraphQLRequest<TVariables>;\n maxUsageCount?: number;\n result?: FetchResult<TData> | ResultFunction<FetchResult<TData>, TVariables>;\n error?: Error;\n delay?: number;\n variableMatcher?: VariableMatcher<TVariables>;\n newData?: ResultFunction<FetchResult>;\n}\n\nexport interface MockLinkOptions {\n showWarnings?: boolean;\n}\n\nfunction requestToKey(request: GraphQLRequest, addTypename: Boolean): string {\n const queryString =\n request.query &&\n print(addTypename ? addTypenameToDocument(request.query) : request.query);\n const requestKey = { query: queryString };\n return JSON.stringify(requestKey);\n}\n\nexport class MockLink extends ApolloLink {\n public operation: Operation;\n public addTypename: Boolean = true;\n public showWarnings: boolean = true;\n private mockedResponsesByKey: { [key: string]: MockedResponse[] } = {};\n\n constructor(\n mockedResponses: ReadonlyArray<MockedResponse>,\n addTypename: Boolean = true,\n options: MockLinkOptions = Object.create(null)\n ) {\n super();\n this.addTypename = addTypename;\n this.showWarnings = options.showWarnings ?? true;\n\n if (mockedResponses) {\n mockedResponses.forEach((mockedResponse) => {\n this.addMockedResponse(mockedResponse);\n });\n }\n }\n\n public addMockedResponse(mockedResponse: MockedResponse) {\n const normalizedMockedResponse =\n this.normalizeMockedResponse(mockedResponse);\n const key = requestToKey(\n normalizedMockedResponse.request,\n this.addTypename\n );\n let mockedResponses = this.mockedResponsesByKey[key];\n if (!mockedResponses) {\n mockedResponses = [];\n this.mockedResponsesByKey[key] = mockedResponses;\n }\n mockedResponses.push(normalizedMockedResponse);\n }\n\n public request(operation: Operation): Observable<FetchResult> | null {\n this.operation = operation;\n const key = requestToKey(operation, this.addTypename);\n const unmatchedVars: Array<Record<string, any>> = [];\n const requestVariables = operation.variables || {};\n const mockedResponses = this.mockedResponsesByKey[key];\n const responseIndex = mockedResponses\n ? mockedResponses.findIndex((res, index) => {\n const mockedResponseVars = res.request.variables || {};\n if (equal(requestVariables, mockedResponseVars)) {\n return true;\n }\n if (res.variableMatcher && res.variableMatcher(operation.variables)) {\n return true;\n }\n unmatchedVars.push(mockedResponseVars);\n return false;\n })\n : -1;\n\n const response =\n responseIndex >= 0 ? mockedResponses[responseIndex] : void 0;\n\n let configError: Error;\n\n if (!response) {\n configError = new Error(\n `No more mocked responses for the query: ${print(operation.query)}\nExpected variables: ${stringifyForDisplay(operation.variables)}\n${\n unmatchedVars.length > 0\n ? `\nFailed to match ${unmatchedVars.length} mock${\n unmatchedVars.length === 1 ? \"\" : \"s\"\n } for this query. The mocked response had the following variables:\n${unmatchedVars.map((d) => ` ${stringifyForDisplay(d)}`).join(\"\\n\")}\n`\n : \"\"\n}`\n );\n\n if (this.showWarnings) {\n console.warn(\n configError.message +\n \"\\nThis typically indicates a configuration error in your mocks \" +\n \"setup, usually due to a typo or mismatched variable.\"\n );\n }\n } else {\n if (response.maxUsageCount! > 1) {\n response.maxUsageCount!--;\n } else {\n mockedResponses.splice(responseIndex, 1);\n }\n const { newData } = response;\n if (newData) {\n response.result = newData(operation.variables);\n mockedResponses.push(response);\n }\n\n if (!response.result && !response.error) {\n configError = new Error(\n `Mocked response should contain either result or error: ${key}`\n );\n }\n }\n\n return new Observable((observer) => {\n const timer = setTimeout(\n () => {\n if (configError) {\n try {\n // The onError function can return false to indicate that\n // configError need not be passed to observer.error. For\n // example, the default implementation of onError calls\n // observer.error(configError) and then returns false to\n // prevent this extra (harmless) observer.error call.\n if (this.onError(configError, observer) !== false) {\n throw configError;\n }\n } catch (error) {\n observer.error(error);\n }\n } else if (response) {\n if (response.error) {\n observer.error(response.error);\n } else {\n if (response.result) {\n observer.next(\n typeof response.result === \"function\"\n ? response.result(operation.variables)\n : response.result\n );\n }\n observer.complete();\n }\n }\n },\n (response && response.delay) || 0\n );\n\n return () => {\n clearTimeout(timer);\n };\n });\n }\n\n private normalizeMockedResponse(\n mockedResponse: MockedResponse\n ): MockedResponse {\n const newMockedResponse = cloneDeep(mockedResponse);\n const queryWithoutConnection = removeConnectionDirectiveFromDocument(\n newMockedResponse.request.query\n );\n invariant(queryWithoutConnection, \"query is required\");\n newMockedResponse.request.query = queryWithoutConnection!;\n const query = removeClientSetsFromDocument(newMockedResponse.request.query);\n if (query) {\n newMockedResponse.request.query = query;\n }\n\n mockedResponse.maxUsageCount = mockedResponse.maxUsageCount ?? 1;\n invariant(\n mockedResponse.maxUsageCount > 0,\n `Mock response maxUsageCount must be greater than 0, %s given`,\n mockedResponse.maxUsageCount\n );\n\n this.normalizeVariableMatching(newMockedResponse);\n return newMockedResponse;\n }\n\n private normalizeVariableMatching(mockedResponse: MockedResponse) {\n const variables = mockedResponse.request.variables;\n if (mockedResponse.variableMatcher && variables) {\n throw new Error(\n \"Mocked response should contain either variableMatcher or request.variables\"\n );\n }\n\n if (!mockedResponse.variableMatcher) {\n mockedResponse.variableMatcher = (vars) => {\n const requestVariables = vars || {};\n const mockedResponseVariables = variables || {};\n return equal(requestVariables, mockedResponseVariables);\n };\n }\n }\n}\n\nexport interface MockApolloLink extends ApolloLink {\n operation?: Operation;\n}\n\n// Pass in multiple mocked responses, so that you can test flows that end up\n// making multiple queries to the server.\n// NOTE: The last arg can optionally be an `addTypename` arg.\nexport function mockSingleLink(...mockedResponses: Array<any>): MockApolloLink {\n // To pull off the potential typename. If this isn't a boolean, we'll just\n // set it true later.\n let maybeTypename = mockedResponses[mockedResponses.length - 1];\n let mocks = mockedResponses.slice(0, mockedResponses.length - 1);\n\n if (typeof maybeTypename !== \"boolean\") {\n mocks = mockedResponses;\n maybeTypename = true;\n }\n\n return new MockLink(mocks, maybeTypename);\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import type { Observable } from "../../utilities/index.js";
2
+ interface TakeOptions {
3
+ timeout?: number;
4
+ }
5
+ type ObservableEvent<T> = {
6
+ type: "next";
7
+ value: T;
8
+ } | {
9
+ type: "error";
10
+ error: any;
11
+ } | {
12
+ type: "complete";
13
+ };
14
+ declare class IteratorStream<T> {
15
+ private iterator;
16
+ constructor(iterator: AsyncGenerator<T, void, unknown>);
17
+ take({ timeout }?: TakeOptions): Promise<T>;
18
+ }
19
+ export declare class ObservableStream<T> extends IteratorStream<ObservableEvent<T>> {
20
+ constructor(observable: Observable<T>);
21
+ takeNext(options?: TakeOptions): Promise<T>;
22
+ takeError(options?: TakeOptions): Promise<any>;
23
+ takeComplete(options?: TakeOptions): Promise<void>;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=ObservableStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservableStream.d.ts","sourceRoot":"","sources":["../../../src/testing/internal/ObservableStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,KAAK,eAAe,CAAC,CAAC,IAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AA6BzB,cAAM,cAAc,CAAC,CAAC;IACR,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;IAExD,IAAI,CAAC,EAAE,OAAa,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;CAY5D;AAED,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7D,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAI/B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAM3C,SAAS,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAM9C,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzD"}
@@ -0,0 +1,101 @@
1
+ import { __asyncGenerator, __await, __awaiter, __extends, __generator } from "tslib";
2
+ function observableToAsyncEventIterator(observable) {
3
+ return __asyncGenerator(this, arguments, function observableToAsyncEventIterator_1() {
4
+ function queuePromise() {
5
+ promises.push(new Promise(function (resolve) {
6
+ resolveNext = function (event) {
7
+ resolve(event);
8
+ queuePromise();
9
+ };
10
+ }));
11
+ }
12
+ var resolveNext, promises;
13
+ return __generator(this, function (_a) {
14
+ switch (_a.label) {
15
+ case 0:
16
+ promises = [];
17
+ queuePromise();
18
+ observable.subscribe(function (value) { return resolveNext({ type: "next", value: value }); }, function (error) { return resolveNext({ type: "error", error: error }); }, function () { return resolveNext({ type: "complete" }); });
19
+ _a.label = 1;
20
+ case 1:
21
+ if (!true) return [3, 4];
22
+ return [4, __await(promises.shift())];
23
+ case 2: return [4, _a.sent()];
24
+ case 3:
25
+ _a.sent();
26
+ return [3, 1];
27
+ case 4: return [2];
28
+ }
29
+ });
30
+ });
31
+ }
32
+ var IteratorStream = (function () {
33
+ function IteratorStream(iterator) {
34
+ this.iterator = iterator;
35
+ }
36
+ IteratorStream.prototype.take = function (_a) {
37
+ var _b = _a === void 0 ? {} : _a, _c = _b.timeout, timeout = _c === void 0 ? 100 : _c;
38
+ return __awaiter(this, void 0, void 0, function () {
39
+ return __generator(this, function (_d) {
40
+ return [2, Promise.race([
41
+ this.iterator.next().then(function (result) { return result.value; }),
42
+ new Promise(function (_, reject) {
43
+ setTimeout(reject, timeout, new Error("Timeout waiting for next event"));
44
+ }),
45
+ ])];
46
+ });
47
+ });
48
+ };
49
+ return IteratorStream;
50
+ }());
51
+ var ObservableStream = (function (_super) {
52
+ __extends(ObservableStream, _super);
53
+ function ObservableStream(observable) {
54
+ return _super.call(this, observableToAsyncEventIterator(observable)) || this;
55
+ }
56
+ ObservableStream.prototype.takeNext = function (options) {
57
+ return __awaiter(this, void 0, void 0, function () {
58
+ var event;
59
+ return __generator(this, function (_a) {
60
+ switch (_a.label) {
61
+ case 0: return [4, this.take(options)];
62
+ case 1:
63
+ event = _a.sent();
64
+ expect(event).toEqual({ type: "next", value: expect.anything() });
65
+ return [2, event.value];
66
+ }
67
+ });
68
+ });
69
+ };
70
+ ObservableStream.prototype.takeError = function (options) {
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ var event;
73
+ return __generator(this, function (_a) {
74
+ switch (_a.label) {
75
+ case 0: return [4, this.take(options)];
76
+ case 1:
77
+ event = _a.sent();
78
+ expect(event).toEqual({ type: "error", error: expect.anything() });
79
+ return [2, event.error];
80
+ }
81
+ });
82
+ });
83
+ };
84
+ ObservableStream.prototype.takeComplete = function (options) {
85
+ return __awaiter(this, void 0, void 0, function () {
86
+ var event;
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0: return [4, this.take(options)];
90
+ case 1:
91
+ event = _a.sent();
92
+ expect(event).toEqual({ type: "complete" });
93
+ return [2];
94
+ }
95
+ });
96
+ });
97
+ };
98
+ return ObservableStream;
99
+ }(IteratorStream));
100
+ export { ObservableStream };
101
+ //# sourceMappingURL=ObservableStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObservableStream.js","sourceRoot":"","sources":["../../../src/testing/internal/ObservableStream.ts"],"names":[],"mappings":";AAUA,SAAgB,8BAA8B,CAAI,UAAyB;;QAKzE,SAAS,YAAY;YACnB,QAAQ,CAAC,IAAI,CACX,IAAI,OAAO,CAAqB,UAAC,OAAO;gBACtC,WAAW,GAAG,UAAC,KAAyB;oBACtC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,YAAY,EAAE,CAAC;gBACjB,CAAC,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;;;;;oBAZK,QAAQ,GAAkC,EAAE,CAAC;oBACnD,YAAY,EAAE,CAAC;oBAaf,UAAU,CAAC,SAAS,CAClB,UAAC,KAAK,IAAK,OAAA,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAA,EAAE,CAAC,EAApC,CAAoC,EAC/C,UAAC,KAAK,IAAK,OAAA,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,OAAA,EAAE,CAAC,EAArC,CAAqC,EAChD,cAAM,OAAA,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAjC,CAAiC,CACxC,CAAC;;;yBAEK,IAAI;uCACH,QAAQ,CAAC,KAAK,EAAG;wBAAvB,sBAAuB;;oBAAvB,SAAuB,CAAC;;;;;;CAE3B;AAED;IACE,wBAAoB,QAA0C;QAA1C,aAAQ,GAAR,QAAQ,CAAkC;IAAG,CAAC;IAE5D,6BAAI,GAAV,UAAW,EAAmC;YAAnC,qBAAiC,EAAE,KAAA,EAAjC,eAAa,EAAb,OAAO,mBAAG,GAAG,KAAA;;;gBACxB,WAAO,OAAO,CAAC,IAAI,CAAC;wBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAM,EAAb,CAAa,CAAC;wBACpD,IAAI,OAAO,CAAI,UAAC,CAAC,EAAE,MAAM;4BACvB,UAAU,CACR,MAAM,EACN,OAAO,EACP,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAC5C,CAAC;wBACJ,CAAC,CAAC;qBACH,CAAC,EAAC;;;KACJ;IACH,qBAAC;AAAD,CAAC,AAfD,IAeC;AAED;IAAyC,oCAAkC;IACzE,0BAAY,UAAyB;eACnC,kBAAM,8BAA8B,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAEK,mCAAQ,GAAd,UAAe,OAAqB;;;;;4BACpB,WAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;wBAAhC,KAAK,GAAG,SAAwB;wBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAClE,WAAQ,KAA+C,CAAC,KAAK,EAAC;;;;KAC/D;IAEK,oCAAS,GAAf,UAAgB,OAAqB;;;;;4BACrB,WAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;wBAAhC,KAAK,GAAG,SAAwB;wBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBACnE,WAAQ,KAAgD,CAAC,KAAK,EAAC;;;;KAChE;IAEK,uCAAY,GAAlB,UAAmB,OAAqB;;;;;4BACxB,WAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;wBAAhC,KAAK,GAAG,SAAwB;wBACtC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;;;;;KAC7C;IACH,uBAAC;AAAD,CAAC,AArBD,CAAyC,cAAc,GAqBtD","sourcesContent":["import type { Observable } from \"../../utilities/index.js\";\n\ninterface TakeOptions {\n timeout?: number;\n}\ntype ObservableEvent<T> =\n | { type: \"next\"; value: T }\n | { type: \"error\"; error: any }\n | { type: \"complete\" };\n\nasync function* observableToAsyncEventIterator<T>(observable: Observable<T>) {\n let resolveNext: (value: ObservableEvent<T>) => void;\n const promises: Promise<ObservableEvent<T>>[] = [];\n queuePromise();\n\n function queuePromise() {\n promises.push(\n new Promise<ObservableEvent<T>>((resolve) => {\n resolveNext = (event: ObservableEvent<T>) => {\n resolve(event);\n queuePromise();\n };\n })\n );\n }\n\n observable.subscribe(\n (value) => resolveNext({ type: \"next\", value }),\n (error) => resolveNext({ type: \"error\", error }),\n () => resolveNext({ type: \"complete\" })\n );\n\n while (true) {\n yield promises.shift()!;\n }\n}\n\nclass IteratorStream<T> {\n constructor(private iterator: AsyncGenerator<T, void, unknown>) {}\n\n async take({ timeout = 100 }: TakeOptions = {}): Promise<T> {\n return Promise.race([\n this.iterator.next().then((result) => result.value!),\n new Promise<T>((_, reject) => {\n setTimeout(\n reject,\n timeout,\n new Error(\"Timeout waiting for next event\")\n );\n }),\n ]);\n }\n}\n\nexport class ObservableStream<T> extends IteratorStream<ObservableEvent<T>> {\n constructor(observable: Observable<T>) {\n super(observableToAsyncEventIterator(observable));\n }\n\n async takeNext(options?: TakeOptions): Promise<T> {\n const event = await this.take(options);\n expect(event).toEqual({ type: \"next\", value: expect.anything() });\n return (event as ObservableEvent<T> & { type: \"next\" }).value;\n }\n\n async takeError(options?: TakeOptions): Promise<any> {\n const event = await this.take(options);\n expect(event).toEqual({ type: \"error\", error: expect.anything() });\n return (event as ObservableEvent<T> & { type: \"error\" }).error;\n }\n\n async takeComplete(options?: TakeOptions): Promise<void> {\n const event = await this.take(options);\n expect(event).toEqual({ type: \"complete\" });\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
1
  export * from "./profile/index.js";
2
2
  export * from "./disposables/index.js";
3
+ export { ObservableStream } from "./ObservableStream.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/internal/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/internal/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./profile/index.js";
2
2
  export * from "./disposables/index.js";
3
+ export { ObservableStream } from "./ObservableStream.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/internal/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./profile/index.js\";\nexport * from \"./disposables/index.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/internal/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export * from \"./profile/index.js\";\nexport * from \"./disposables/index.js\";\nexport { ObservableStream } from \"./ObservableStream.js\";\n"]}
@@ -0,0 +1,4 @@
1
+ export declare const canonicalStringify: ((value: any) => string) & {
2
+ reset(): void;
3
+ };
4
+ //# sourceMappingURL=canonicalStringify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalStringify.d.ts","sourceRoot":"","sources":["../../../src/utilities/common/canonicalStringify.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,kBAAkB,WACM,GAAG,KAAG,MAAM;;CAWhD,CAAC"}
@@ -0,0 +1,37 @@
1
+ export var canonicalStringify = Object.assign(function canonicalStringify(value) {
2
+ return JSON.stringify(value, stableObjectReplacer);
3
+ }, {
4
+ reset: function () {
5
+ sortingMap.clear();
6
+ },
7
+ });
8
+ var sortingMap = new Map();
9
+ function stableObjectReplacer(key, value) {
10
+ if (value && typeof value === "object") {
11
+ var proto = Object.getPrototypeOf(value);
12
+ if (proto === Object.prototype || proto === null) {
13
+ var keys = Object.keys(value);
14
+ if (keys.every(everyKeyInOrder))
15
+ return value;
16
+ var unsortedKey = JSON.stringify(keys);
17
+ var sortedKeys = sortingMap.get(unsortedKey);
18
+ if (!sortedKeys) {
19
+ keys.sort();
20
+ var sortedKey = JSON.stringify(keys);
21
+ sortedKeys = sortingMap.get(sortedKey) || keys;
22
+ sortingMap.set(unsortedKey, sortedKeys);
23
+ sortingMap.set(sortedKey, sortedKeys);
24
+ }
25
+ var sortedObject_1 = Object.create(proto);
26
+ sortedKeys.forEach(function (key) {
27
+ sortedObject_1[key] = value[key];
28
+ });
29
+ return sortedObject_1;
30
+ }
31
+ }
32
+ return value;
33
+ }
34
+ function everyKeyInOrder(key, i, keys) {
35
+ return i === 0 || keys[i - 1] <= key;
36
+ }
37
+ //# sourceMappingURL=canonicalStringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalStringify.js","sourceRoot":"","sources":["../../../src/utilities/common/canonicalStringify.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,IAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAC7C,SAAS,kBAAkB,CAAC,KAAU;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AACrD,CAAC,EACD;IACE,KAAK;QAIH,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF,CACF,CAAC;AAIF,IAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;AAQxD,SAAS,oBAAoB,CAAC,GAAW,EAAE,KAAU;IACnD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACtC,IAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAI3C,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YAChD,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAGhC,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9C,IAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE;gBACf,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAGvC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;gBAC/C,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACxC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;aACvC;YACD,IAAM,cAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAG1C,UAAU,CAAC,OAAO,CAAC,UAAC,GAAG;gBACrB,cAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,OAAO,cAAY,CAAC;SACrB;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,SAAS,eAAe,CACtB,GAAW,EACX,CAAS,EACT,IAAuB;IAEvB,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AACvC,CAAC","sourcesContent":["/**\n * Like JSON.stringify, but with object keys always sorted in the same order.\n *\n * To achieve performant sorting, this function uses a Map from JSON-serialized\n * arrays of keys (in any order) to sorted arrays of the same keys, with a\n * single sorted array reference shared by all permutations of the keys.\n *\n * As a drawback, this function will add a little bit more memory for every\n * object encountered that has different (more, less, a different order of) keys\n * than in the past.\n *\n * In a typical application, this extra memory usage should not play a\n * significant role, as `canonicalStringify` will be called for only a limited\n * number of object shapes, and the cache will not grow beyond a certain point.\n * But in some edge cases, this could be a problem, so we provide\n * canonicalStringify.reset() as a way of clearing the cache.\n * */\nexport const canonicalStringify = Object.assign(\n function canonicalStringify(value: any): string {\n return JSON.stringify(value, stableObjectReplacer);\n },\n {\n reset() {\n // Clearing the sortingMap will reclaim all cached memory, without\n // affecting the logical results of canonicalStringify, but potentially\n // sacrificing performance until the cache is refilled.\n sortingMap.clear();\n },\n }\n);\n\n// Values are JSON-serialized arrays of object keys (in any order), and values\n// are sorted arrays of the same keys.\nconst sortingMap = new Map<string, readonly string[]>();\n\n// The JSON.stringify function takes an optional second argument called a\n// replacer function. This function is called for each key-value pair in the\n// object being stringified, and its return value is used instead of the\n// original value. If the replacer function returns a new value, that value is\n// stringified as JSON instead of the original value of the property.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter\nfunction stableObjectReplacer(key: string, value: any) {\n if (value && typeof value === \"object\") {\n const proto = Object.getPrototypeOf(value);\n // We don't want to mess with objects that are not \"plain\" objects, which\n // means their prototype is either Object.prototype or null. This check also\n // prevents needlessly rearranging the indices of arrays.\n if (proto === Object.prototype || proto === null) {\n const keys = Object.keys(value);\n // If keys is already sorted, let JSON.stringify serialize the original\n // value instead of creating a new object with keys in the same order.\n if (keys.every(everyKeyInOrder)) return value;\n const unsortedKey = JSON.stringify(keys);\n let sortedKeys = sortingMap.get(unsortedKey);\n if (!sortedKeys) {\n keys.sort();\n const sortedKey = JSON.stringify(keys);\n // Checking for sortedKey in the sortingMap allows us to share the same\n // sorted array reference for all permutations of the same set of keys.\n sortedKeys = sortingMap.get(sortedKey) || keys;\n sortingMap.set(unsortedKey, sortedKeys);\n sortingMap.set(sortedKey, sortedKeys);\n }\n const sortedObject = Object.create(proto);\n // Reassigning the keys in sorted order will cause JSON.stringify to\n // serialize them in sorted order.\n sortedKeys.forEach((key) => {\n sortedObject[key] = value[key];\n });\n return sortedObject;\n }\n }\n return value;\n}\n\n// Since everything that happens in stableObjectReplacer benefits from being as\n// efficient as possible, we use a static function as the callback for\n// keys.every in order to test if the provided keys are already sorted without\n// allocating extra memory for a callback.\nfunction everyKeyInOrder(\n key: string,\n i: number,\n keys: readonly string[]\n): boolean {\n return i === 0 || keys[i - 1] <= key;\n}\n"]}