@apollo/client 3.10.0-rc.0 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/apollo-client.cjs +18 -7
  3. package/apollo-client.cjs.map +1 -1
  4. package/apollo-client.min.cjs +1 -1
  5. package/cache/index.d.ts +1 -1
  6. package/cache/index.js.map +1 -1
  7. package/core/ApolloClient.js +1 -0
  8. package/core/ApolloClient.js.map +1 -1
  9. package/core/core.cjs +2 -1
  10. package/core/core.cjs.map +1 -1
  11. package/core/core.cjs.native.js +2 -1
  12. package/core/index.d.ts +1 -1
  13. package/core/index.js.map +1 -1
  14. package/dev/dev.cjs +1 -1
  15. package/dev/dev.cjs.map +1 -1
  16. package/dev/dev.cjs.native.js +1 -1
  17. package/package.json +2 -1
  18. package/react/hooks/hooks.cjs +10 -1
  19. package/react/hooks/hooks.cjs.map +1 -1
  20. package/react/hooks/hooks.cjs.native.js +10 -1
  21. package/react/hooks/internal/wrapHook.d.ts +2 -1
  22. package/react/hooks/internal/wrapHook.js.map +1 -1
  23. package/react/hooks/useQueryRefHandlers.js +12 -0
  24. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  25. package/react/hooks/useReadQuery.js +9 -1
  26. package/react/hooks/useReadQuery.js.map +1 -1
  27. package/react/internal/cache/QueryReference.js +6 -5
  28. package/react/internal/cache/QueryReference.js.map +1 -1
  29. package/react/internal/internal.cjs +6 -5
  30. package/react/internal/internal.cjs.map +1 -1
  31. package/react/internal/internal.cjs.native.js +6 -5
  32. package/testing/core/core.cjs +0 -103
  33. package/testing/core/core.cjs.map +1 -1
  34. package/testing/core/core.cjs.native.js +0 -103
  35. package/testing/core/index.d.ts +0 -2
  36. package/testing/core/index.js +0 -2
  37. package/testing/core/index.js.map +1 -1
  38. package/testing/{core/createMockFetch.d.ts → experimental/createSchemaFetch.d.ts} +15 -10
  39. package/testing/experimental/createSchemaFetch.js +99 -0
  40. package/testing/experimental/createSchemaFetch.js.map +1 -0
  41. package/testing/{core/createProxiedSchema.d.ts → experimental/createTestSchema.d.ts} +26 -18
  42. package/testing/{core/createProxiedSchema.js → experimental/createTestSchema.js} +34 -23
  43. package/testing/experimental/createTestSchema.js.map +1 -0
  44. package/testing/experimental/experimental.cjs +274 -0
  45. package/testing/experimental/experimental.cjs.map +1 -0
  46. package/testing/experimental/experimental.cjs.native.js +274 -0
  47. package/testing/{graphql-tools → experimental/graphql-tools}/utils.js +1 -1
  48. package/testing/experimental/graphql-tools/utils.js.map +1 -0
  49. package/testing/experimental/graphql-tools/utils.test.js.map +1 -0
  50. package/testing/experimental/index.d.ts +3 -0
  51. package/testing/experimental/index.js +3 -0
  52. package/testing/experimental/index.js.map +1 -0
  53. package/testing/experimental/package.json +8 -0
  54. package/testing/index.d.ts +0 -1
  55. package/testing/index.js +0 -1
  56. package/testing/index.js.map +1 -1
  57. package/testing/internal/profile/Render.d.ts +1 -102
  58. package/testing/internal/profile/Render.js.map +1 -1
  59. package/testing/internal/profile/profile.js +6 -2
  60. package/testing/internal/profile/profile.js.map +1 -1
  61. package/testing/testing.cjs +0 -134
  62. package/testing/testing.cjs.map +1 -1
  63. package/testing/testing.cjs.native.js +0 -134
  64. package/utilities/globals/globals.cjs +1 -1
  65. package/utilities/globals/globals.cjs.map +1 -1
  66. package/utilities/globals/globals.cjs.native.js +1 -1
  67. package/version.js +1 -1
  68. package/.changeset/chatty-llamas-switch.md +0 -5
  69. package/.changeset/pre.json +0 -14
  70. package/.changeset/stupid-bears-cheat.md +0 -5
  71. package/.changeset/tasty-pillows-ring.md +0 -5
  72. package/.changeset/tiny-bugs-tap.md +0 -5
  73. package/.changeset/twelve-apples-vanish.md +0 -5
  74. package/testing/core/createMockFetch.js +0 -79
  75. package/testing/core/createMockFetch.js.map +0 -1
  76. package/testing/core/createProxiedSchema.js.map +0 -1
  77. package/testing/graphql-tools/utils.js.map +0 -1
  78. package/testing/graphql-tools/utils.test.js.map +0 -1
  79. /package/testing/{graphql-tools → experimental/graphql-tools}/utils.d.ts +0 -0
  80. /package/testing/{graphql-tools → experimental/graphql-tools}/utils.test.d.ts +0 -0
  81. /package/testing/{graphql-tools → experimental/graphql-tools}/utils.test.js +0 -0
@@ -0,0 +1,274 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var schema = require('@graphql-tools/schema');
7
+ var merge = require('@graphql-tools/merge');
8
+ var graphql = require('graphql');
9
+ var utilities = require('../../utilities');
10
+ var utils = require('@graphql-tools/utils');
11
+ var core = require('../../core');
12
+
13
+ var takeRandom = function (arr) { return arr[Math.floor(Math.random() * arr.length)]; };
14
+ var createMockSchema = function (staticSchema, mocks) {
15
+ var _a;
16
+ var getType = function (typeName) {
17
+ var type = staticSchema.getType(typeName);
18
+ if (!type || !(graphql.isObjectType(type) || graphql.isInterfaceType(type))) {
19
+ throw new Error("".concat(typeName, " does not exist on schema or is not an object or interface"));
20
+ }
21
+ return type;
22
+ };
23
+ var getFieldType = function (typeName, fieldName) {
24
+ if (fieldName === "__typename") {
25
+ return graphql.GraphQLString;
26
+ }
27
+ var type = getType(typeName);
28
+ var field = type.getFields()[fieldName];
29
+ if (!field) {
30
+ throw new Error("".concat(fieldName, " does not exist on type ").concat(typeName));
31
+ }
32
+ return field.type;
33
+ };
34
+ var generateValueFromType = function (fieldType) {
35
+ var nullableType = graphql.getNullableType(fieldType);
36
+ if (graphql.isScalarType(nullableType)) {
37
+ var mockFn = mocks[nullableType.name];
38
+ if (typeof mockFn !== "function") {
39
+ throw new Error("No mock defined for type \"".concat(nullableType.name, "\""));
40
+ }
41
+ return mockFn();
42
+ }
43
+ else if (graphql.isEnumType(nullableType)) {
44
+ var mockFn = mocks[nullableType.name];
45
+ if (typeof mockFn === "function")
46
+ return mockFn();
47
+ var values = nullableType.getValues().map(function (v) { return v.value; });
48
+ return takeRandom(values);
49
+ }
50
+ else if (graphql.isObjectType(nullableType)) {
51
+ return {};
52
+ }
53
+ else if (graphql.isListType(nullableType)) {
54
+ return tslib.__spreadArray([], new Array(2), true).map(function () {
55
+ return generateValueFromType(nullableType.ofType);
56
+ });
57
+ }
58
+ else if (graphql.isAbstractType(nullableType)) {
59
+ var mock = mocks[nullableType.name];
60
+ var typeName = void 0;
61
+ var values = {};
62
+ if (!mock) {
63
+ typeName = takeRandom(staticSchema.getPossibleTypes(nullableType).map(function (t) { return t.name; }));
64
+ }
65
+ else if (typeof mock === "function") {
66
+ var mockRes = mock();
67
+ if (mockRes === null)
68
+ return null;
69
+ if (!utilities.isNonNullObject(mockRes)) {
70
+ throw new Error("Value returned by the mock for ".concat(nullableType.name, " is not an object or null"));
71
+ }
72
+ values = mockRes;
73
+ if (typeof values["__typename"] !== "string") {
74
+ throw new Error("Please return a __typename in \"".concat(nullableType.name, "\""));
75
+ }
76
+ typeName = values["__typename"];
77
+ }
78
+ else if (utilities.isNonNullObject(mock) &&
79
+ typeof mock["__typename"] === "function") {
80
+ var mockRes = mock["__typename"]();
81
+ if (typeof mockRes !== "string") {
82
+ throw new Error("'__typename' returned by the mock for abstract type ".concat(nullableType.name, " is not a string"));
83
+ }
84
+ typeName = mockRes;
85
+ }
86
+ else {
87
+ throw new Error("Please return a __typename in \"".concat(nullableType.name, "\""));
88
+ }
89
+ return typeName;
90
+ }
91
+ else {
92
+ throw new Error("".concat(nullableType, " not implemented"));
93
+ }
94
+ };
95
+ var isRootType = function (type, schema) {
96
+ var rootTypeNames = utils.getRootTypeNames(schema);
97
+ return rootTypeNames.has(type.name);
98
+ };
99
+ var mockResolver = function (source, args, contex, info) {
100
+ var defaultResolvedValue = graphql.defaultFieldResolver(source, args, contex, info);
101
+ if (defaultResolvedValue !== undefined)
102
+ return defaultResolvedValue;
103
+ if (isRootType(info.parentType, info.schema)) {
104
+ return {
105
+ typeName: info.parentType.name,
106
+ key: "ROOT",
107
+ fieldName: info.fieldName,
108
+ fieldArgs: args,
109
+ };
110
+ }
111
+ if (defaultResolvedValue === undefined) {
112
+ var fieldType = getFieldType(info.parentType.name, info.fieldName);
113
+ return generateValueFromType(fieldType);
114
+ }
115
+ return undefined;
116
+ };
117
+ return utils.mapSchema(staticSchema, (_a = {},
118
+ _a[utils.MapperKind.OBJECT_FIELD] = function (fieldConfig) {
119
+ var newFieldConfig = tslib.__assign({}, fieldConfig);
120
+ var oldResolver = fieldConfig.resolve;
121
+ if (!oldResolver) {
122
+ newFieldConfig.resolve = mockResolver;
123
+ }
124
+ return newFieldConfig;
125
+ },
126
+ _a[utils.MapperKind.ABSTRACT_TYPE] = function (type) {
127
+ if (type.resolveType != null && type.resolveType.length) {
128
+ return;
129
+ }
130
+ var typeResolver = function (typename) {
131
+ return typename;
132
+ };
133
+ if (graphql.isUnionType(type)) {
134
+ return new graphql.GraphQLUnionType(tslib.__assign(tslib.__assign({}, type.toConfig()), { resolveType: typeResolver }));
135
+ }
136
+ else {
137
+ return new graphql.GraphQLInterfaceType(tslib.__assign(tslib.__assign({}, type.toConfig()), { resolveType: typeResolver }));
138
+ }
139
+ },
140
+ _a));
141
+ };
142
+
143
+ var createTestSchema = function (schemaWithTypeDefs, options) {
144
+ var _a;
145
+ var targetResolvers = tslib.__assign({}, options.resolvers);
146
+ var targetSchema = schema.addResolversToSchema({
147
+ schema: createMockSchema(schemaWithTypeDefs, (_a = options.scalars) !== null && _a !== void 0 ? _a : {}),
148
+ resolvers: targetResolvers,
149
+ });
150
+ var fns = {
151
+ add: function (_a) {
152
+ var newResolvers = _a.resolvers;
153
+ targetResolvers = merge.mergeResolvers([targetResolvers, newResolvers]);
154
+ targetSchema = schema.addResolversToSchema({
155
+ schema: targetSchema,
156
+ resolvers: targetResolvers,
157
+ });
158
+ return targetSchema;
159
+ },
160
+ fork: function (_a) {
161
+ var _b;
162
+ var _c = _a === void 0 ? {} : _a, newResolvers = _c.resolvers;
163
+ return createTestSchema(targetSchema, {
164
+ resolvers: (_b = merge.mergeResolvers([targetResolvers, newResolvers])) !== null && _b !== void 0 ? _b : targetResolvers,
165
+ scalars: options.scalars,
166
+ });
167
+ },
168
+ reset: function () {
169
+ targetSchema = schema.addResolversToSchema({
170
+ schema: schemaWithTypeDefs,
171
+ resolvers: options.resolvers,
172
+ });
173
+ },
174
+ };
175
+ var schema$1 = new Proxy(targetSchema, {
176
+ get: function (_target, p) {
177
+ if (p in fns) {
178
+ return Reflect.get(fns, p);
179
+ }
180
+ var property = Reflect.get(targetSchema, p);
181
+ if (typeof property === "function") {
182
+ return property.bind(targetSchema);
183
+ }
184
+ return property;
185
+ },
186
+ });
187
+ return schema$1;
188
+ };
189
+
190
+ function withCleanup(item, cleanup) {
191
+ var _a;
192
+ return tslib.__assign(tslib.__assign({}, item), (_a = {}, _a[Symbol.dispose] = function () {
193
+ cleanup(item);
194
+ if (Symbol.dispose in item) {
195
+ item[Symbol.dispose]();
196
+ }
197
+ }, _a));
198
+ }
199
+
200
+ function wait(ms) {
201
+ return tslib.__awaiter(this, void 0, void 0, function () {
202
+ return tslib.__generator(this, function (_a) {
203
+ return [2 , new Promise(function (resolve) { return setTimeout(resolve, ms); })];
204
+ });
205
+ });
206
+ }
207
+
208
+ var createSchemaFetch = function (schema, mockFetchOpts) {
209
+ var _a, _b, _c, _d;
210
+ if (mockFetchOpts === void 0) { mockFetchOpts = { validate: true }; }
211
+ var prevFetch = window.fetch;
212
+ var delayMin = (_b = (_a = mockFetchOpts.delay) === null || _a === void 0 ? void 0 : _a.min) !== null && _b !== void 0 ? _b : 3;
213
+ var delayMax = (_d = (_c = mockFetchOpts.delay) === null || _c === void 0 ? void 0 : _c.max) !== null && _d !== void 0 ? _d : delayMin + 2;
214
+ if (delayMin > delayMax) {
215
+ throw new Error("Please configure a minimum delay that is less than the maximum delay. The default minimum delay is 3ms.");
216
+ }
217
+ var mockFetch = function (_uri, options) { return tslib.__awaiter(void 0, void 0, void 0, function () {
218
+ var randomDelay, body, document, validationErrors, result, stringifiedResult;
219
+ return tslib.__generator(this, function (_a) {
220
+ switch (_a.label) {
221
+ case 0:
222
+ if (!(delayMin > 0)) return [3 , 2];
223
+ randomDelay = Math.random() * (delayMax - delayMin) + delayMin;
224
+ return [4 , wait(randomDelay)];
225
+ case 1:
226
+ _a.sent();
227
+ _a.label = 2;
228
+ case 2:
229
+ body = JSON.parse(options.body);
230
+ document = core.gql(body.query);
231
+ if (mockFetchOpts.validate) {
232
+ validationErrors = [];
233
+ try {
234
+ validationErrors = graphql.validate(schema, document);
235
+ }
236
+ catch (e) {
237
+ validationErrors = [
238
+ new core.ApolloError({ graphQLErrors: [e] }),
239
+ ];
240
+ }
241
+ if ((validationErrors === null || validationErrors === void 0 ? void 0 : validationErrors.length) > 0) {
242
+ return [2 , new Response(JSON.stringify({ errors: validationErrors }))];
243
+ }
244
+ }
245
+ return [4 , graphql.execute({
246
+ schema: schema,
247
+ document: document,
248
+ variableValues: body.variables,
249
+ operationName: body.operationName,
250
+ })];
251
+ case 3:
252
+ result = _a.sent();
253
+ stringifiedResult = JSON.stringify(result);
254
+ return [2 , new Response(stringifiedResult)];
255
+ }
256
+ });
257
+ }); };
258
+ function mockGlobal() {
259
+ window.fetch = mockFetch;
260
+ var restore = function () {
261
+ if (window.fetch === mockFetch) {
262
+ window.fetch = prevFetch;
263
+ }
264
+ };
265
+ return withCleanup({ restore: restore }, restore);
266
+ }
267
+ return Object.assign(mockFetch, {
268
+ mockGlobal: mockGlobal,
269
+ });
270
+ };
271
+
272
+ exports.createSchemaFetch = createSchemaFetch;
273
+ exports.createTestSchema = createTestSchema;
274
+ //# sourceMappingURL=experimental.cjs.map
@@ -1,6 +1,6 @@
1
1
  import { __assign, __spreadArray } from "tslib";
2
2
  import { GraphQLInterfaceType, GraphQLString, GraphQLUnionType, defaultFieldResolver, getNullableType, isAbstractType, isEnumType, isInterfaceType, isListType, isObjectType, isScalarType, isUnionType, } from "graphql";
3
- import { isNonNullObject } from "../../utilities/index.js";
3
+ import { isNonNullObject } from "../../../utilities/index.js";
4
4
  import { MapperKind, mapSchema, getRootTypeNames } from "@graphql-tools/utils";
5
5
  // Taken from @graphql-tools/mock:
6
6
  // https://github.com/ardatan/graphql-tools/blob/4b56b04d69b02919f6c5fa4f97d33da63f36e8c8/packages/mock/src/utils.ts#L20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/testing/experimental/graphql-tools/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n GraphQLFieldResolver,\n GraphQLObjectType,\n GraphQLOutputType,\n GraphQLSchema,\n} from \"graphql\";\n\nimport {\n GraphQLInterfaceType,\n GraphQLString,\n GraphQLUnionType,\n defaultFieldResolver,\n getNullableType,\n isAbstractType,\n isEnumType,\n isInterfaceType,\n isListType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from \"graphql\";\n\nimport { isNonNullObject } from \"../../../utilities/index.js\";\nimport { MapperKind, mapSchema, getRootTypeNames } from \"@graphql-tools/utils\";\n\n// Taken from @graphql-tools/mock:\n// https://github.com/ardatan/graphql-tools/blob/4b56b04d69b02919f6c5fa4f97d33da63f36e8c8/packages/mock/src/utils.ts#L20\nconst takeRandom = <T>(arr: T[]) => arr[Math.floor(Math.random() * arr.length)];\n\n/**\n * A function that accepts a static `schema` and a `mocks` object for specifying\n * default scalar mocks and returns a `GraphQLSchema`.\n *\n * @param staticSchema - A static `GraphQLSchema`.\n * @param mocks - An object containing scalar mocks.\n * @returns A `GraphQLSchema` with scalar mocks.\n *\n * @example\n * ```js\n * const mockedSchema = createMockSchema(schema, {\n ID: () => \"1\",\n Int: () => 42,\n String: () => \"String\",\n Date: () => new Date(\"January 1, 2024 01:00:00\").toJSON().split(\"T\")[0],\n });\n * ```\n * @since 3.10.0\n * @alpha\n */\nconst createMockSchema = (\n staticSchema: GraphQLSchema,\n mocks: { [key: string]: any }\n) => {\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L613\n const getType = (typeName: string) => {\n const type = staticSchema.getType(typeName);\n\n if (!type || !(isObjectType(type) || isInterfaceType(type))) {\n throw new Error(\n `${typeName} does not exist on schema or is not an object or interface`\n );\n }\n\n return type;\n };\n\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L597\n const getFieldType = (typeName: string, fieldName: string) => {\n if (fieldName === \"__typename\") {\n return GraphQLString;\n }\n\n const type = getType(typeName);\n\n const field = type.getFields()[fieldName];\n\n if (!field) {\n throw new Error(`${fieldName} does not exist on type ${typeName}`);\n }\n\n return field.type;\n };\n\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L527\n const generateValueFromType = (fieldType: GraphQLOutputType): unknown => {\n const nullableType = getNullableType(fieldType);\n\n if (isScalarType(nullableType)) {\n const mockFn = mocks[nullableType.name];\n\n if (typeof mockFn !== \"function\") {\n throw new Error(`No mock defined for type \"${nullableType.name}\"`);\n }\n\n return mockFn();\n } else if (isEnumType(nullableType)) {\n const mockFn = mocks[nullableType.name];\n\n if (typeof mockFn === \"function\") return mockFn();\n\n const values = nullableType.getValues().map((v) => v.value);\n\n return takeRandom(values);\n } else if (isObjectType(nullableType)) {\n return {};\n } else if (isListType(nullableType)) {\n return [...new Array(2)].map(() =>\n generateValueFromType(nullableType.ofType)\n );\n } else if (isAbstractType(nullableType)) {\n const mock = mocks[nullableType.name];\n\n let typeName: string;\n\n let values: { [key: string]: unknown } = {};\n\n if (!mock) {\n typeName = takeRandom(\n staticSchema.getPossibleTypes(nullableType).map((t) => t.name)\n );\n } else if (typeof mock === \"function\") {\n const mockRes = mock();\n\n if (mockRes === null) return null;\n\n if (!isNonNullObject(mockRes)) {\n throw new Error(\n `Value returned by the mock for ${nullableType.name} is not an object or null`\n );\n }\n\n values = mockRes;\n\n if (typeof values[\"__typename\"] !== \"string\") {\n throw new Error(\n `Please return a __typename in \"${nullableType.name}\"`\n );\n }\n\n typeName = values[\"__typename\"];\n } else if (\n isNonNullObject(mock) &&\n typeof mock[\"__typename\"] === \"function\"\n ) {\n const mockRes = mock[\"__typename\"]();\n\n if (typeof mockRes !== \"string\") {\n throw new Error(\n `'__typename' returned by the mock for abstract type ${nullableType.name} is not a string`\n );\n }\n\n typeName = mockRes;\n } else {\n throw new Error(`Please return a __typename in \"${nullableType.name}\"`);\n }\n\n return typeName;\n } else {\n throw new Error(`${nullableType} not implemented`);\n }\n };\n\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/utils.ts#L53\n const isRootType = (type: GraphQLObjectType, schema: GraphQLSchema) => {\n const rootTypeNames = getRootTypeNames(schema);\n\n return rootTypeNames.has(type.name);\n };\n\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/addMocksToSchema.ts#L123\n const mockResolver: GraphQLFieldResolver<any, any> = (\n source,\n args,\n contex,\n info\n ) => {\n const defaultResolvedValue = defaultFieldResolver(\n source,\n args,\n contex,\n info\n );\n\n // priority to default resolved value\n if (defaultResolvedValue !== undefined) return defaultResolvedValue;\n\n // we have to handle the root mutation, root query and root subscription types\n // differently, because no resolver is called at the root\n if (isRootType(info.parentType, info.schema)) {\n return {\n typeName: info.parentType.name,\n key: \"ROOT\",\n fieldName: info.fieldName,\n fieldArgs: args,\n };\n }\n\n if (defaultResolvedValue === undefined) {\n const fieldType = getFieldType(info.parentType.name, info.fieldName);\n\n return generateValueFromType(fieldType);\n }\n\n return undefined;\n };\n\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/addMocksToSchema.ts#L176\n return mapSchema(staticSchema, {\n [MapperKind.OBJECT_FIELD]: (fieldConfig) => {\n const newFieldConfig = { ...fieldConfig };\n\n const oldResolver = fieldConfig.resolve;\n\n if (!oldResolver) {\n newFieldConfig.resolve = mockResolver;\n }\n return newFieldConfig;\n },\n\n [MapperKind.ABSTRACT_TYPE]: (type) => {\n if (type.resolveType != null && type.resolveType.length) {\n return;\n }\n\n const typeResolver = (typename: string) => {\n return typename;\n };\n\n if (isUnionType(type)) {\n return new GraphQLUnionType({\n ...type.toConfig(),\n resolveType: typeResolver,\n });\n } else {\n return new GraphQLInterfaceType({\n ...type.toConfig(),\n resolveType: typeResolver,\n });\n }\n },\n });\n};\n\nexport { createMockSchema };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/testing/experimental/graphql-tools/utils.test.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,sIAAsI;;AAEtI,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,IAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnD,IAAM,KAAK,GAAG;IACZ,GAAG,EAAE,cAAM,OAAA,CAAC,EAAD,CAAC;IACZ,KAAK,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;IACjB,MAAM,EAAE,cAAM,OAAA,QAAQ,EAAR,CAAQ;IACtB,EAAE,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;IACd,IAAI,EAAE,cAAM,OAAA,QAAQ,EAAR,CAAQ;CACrB,CAAC;AAEF,IAAM,QAAQ,GAAG,aAAa,CAAC,m1BAwD9B,CAAC;AAEF,IAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAErC,QAAQ,CAAC,kBAAkB,EAAE;IAC3B,EAAE,CAAC,OAAO,EAAE;;;;;oBACJ,KAAK,GAAiB,0GAQ3B,CAAC;oBAEI,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAE5B,qBAAM,OAAO,CAAC;4BACrC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHI,KAAmB,SAGvB,EAHM,IAAI,UAAA,EAAE,MAAM,YAAA;oBAKpB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAErB,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,QAAQ,CAAQ,CAAC;oBAC3C,MAAM,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/C,MAAM,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACjD,MAAM,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAExB,qBAAM,OAAO,CAAC;4BACpC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHY,KAAK,GAAK,CAAA,SAGtB,CAAA,KAHiB;oBAKb,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,QAAQ,CAAQ,CAAC;oBAE7C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;;;SACrD,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;;;;;oBACnB,KAAK,GAAiB,4FAO3B,CAAC;oBACI,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC5B,qBAAM,OAAO,CAAC;4BACrC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHI,KAAmB,SAGvB,EAHM,IAAI,UAAA,EAAE,MAAM,YAAA;oBAKpB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACrB,UAAU,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,QAAQ,CAAQ,CAAC;oBAC3C,MAAM,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChD,MAAM,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAEzB,qBAAM,OAAO,CAAC;4BACpC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHY,KAAK,GAAK,CAAA,SAGtB,CAAA,KAHiB;oBAKb,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,QAAQ,CAAQ,CAAC;oBAE7C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;;;;SACvD,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE;;;;;oBACvB,KAAK,GAAiB,wQAc3B,CAAC;oBAEI,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAE5B,qBAAM,OAAO,CAAC;4BACrC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHI,KAAmB,SAGvB,EAHM,IAAI,UAAA,EAAE,MAAM,YAAA;oBAKpB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC3B,MAAM,CAAE,IAAK,CAAC,QAAQ,CAAS,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;;;SACvE,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE;;;;;oBAC3B,KAAK,GAAiB,iRAe3B,CAAC;oBAEI,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAE5B,qBAAM,OAAO,CAAC;4BACrC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHI,KAAmB,SAGvB,EAHM,IAAI,UAAA,EAAE,MAAM,YAAA;oBAKpB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC3B,MAAM,CAAE,IAAK,CAAC,QAAQ,CAAS,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;;;SACtE,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE;;;;;oBAC3B,KAAK,GAAiB,wIAS3B,CAAC;oBAEI,YAAY,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAE5B,qBAAM,OAAO,CAAC;4BACrC,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,KAAK;yBACd,CAAC,EAAA;;oBAHI,KAAmB,SAGvB,EAHM,IAAI,UAAA,EAAE,MAAM,YAAA;oBAKpB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC3B,MAAM,CAAE,IAAK,CAAC,QAAQ,CAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;;SACxE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Originally from @graphql-tools/mock\n// https://github.com/ardatan/graphql-tools/blob/4b56b04d69b02919f6c5fa4f97d33da63f36e8c8/packages/mock/tests/addMocksToSchema.spec.ts\n\nimport { buildSchema, graphql } from \"graphql\";\nimport { createMockSchema } from \"./utils.js\";\n\nconst mockDate = new Date().toJSON().split(\"T\")[0];\n\nconst mocks = {\n Int: () => 6,\n Float: () => 22.1,\n String: () => \"string\",\n ID: () => \"id\",\n Date: () => mockDate,\n};\n\nconst typeDefs = /* GraphQL */ `\n type User {\n id: ID!\n age: Int!\n name: String!\n image: UserImage!\n book: Book!\n }\n\n type Author {\n _id: ID!\n name: String!\n book: Book!\n }\n\n union UserImage = UserImageSolidColor | UserImageURL\n\n type UserImageSolidColor {\n color: String!\n }\n\n type UserImageURL {\n url: String!\n }\n\n scalar Date\n\n interface Book {\n id: ID!\n title: String\n publishedAt: Date\n }\n\n type TextBook implements Book {\n id: ID!\n title: String\n publishedAt: Date\n text: String\n }\n\n type ColoringBook implements Book {\n id: ID!\n title: String\n publishedAt: Date\n colors: [String]\n }\n\n type Query {\n viewer: User!\n userById(id: ID!): User!\n author: Author!\n }\n\n type Mutation {\n changeViewerName(newName: String!): User!\n }\n`;\n\nconst schema = buildSchema(typeDefs);\n\ndescribe(\"addMocksToSchema\", () => {\n it(\"basic\", async () => {\n const query = /* GraphQL */ `\n query {\n viewer {\n id\n name\n age\n }\n }\n `;\n\n const mockedSchema = createMockSchema(schema, mocks);\n\n const { data, errors } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n expect(errors).not.toBeDefined();\n expect(data).toBeDefined();\n\n const viewerData = data?.[\"viewer\"] as any;\n expect(typeof viewerData[\"id\"]).toBe(\"string\");\n expect(typeof viewerData[\"name\"]).toBe(\"string\");\n expect(typeof viewerData[\"age\"]).toBe(\"number\");\n\n const { data: data2 } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n const viewerData2 = data2?.[\"viewer\"] as any;\n\n expect(viewerData2[\"id\"]).toEqual(viewerData[\"id\"]);\n });\n\n it(\"handle _id key field\", async () => {\n const query = /* GraphQL */ `\n query {\n author {\n _id\n name\n }\n }\n `;\n const mockedSchema = createMockSchema(schema, mocks);\n const { data, errors } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n expect(errors).not.toBeDefined();\n expect(data).toBeDefined();\n const viewerData = data?.[\"author\"] as any;\n expect(typeof viewerData[\"_id\"]).toBe(\"string\");\n expect(typeof viewerData[\"name\"]).toBe(\"string\");\n\n const { data: data2 } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n const viewerData2 = data2?.[\"author\"] as any;\n\n expect(viewerData2[\"_id\"]).toEqual(viewerData[\"_id\"]);\n });\n\n it(\"should handle union type\", async () => {\n const query = /* GraphQL */ `\n query {\n viewer {\n image {\n __typename\n ... on UserImageURL {\n url\n }\n ... on UserImageSolidColor {\n color\n }\n }\n }\n }\n `;\n\n const mockedSchema = createMockSchema(schema, mocks);\n\n const { data, errors } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n expect(errors).not.toBeDefined();\n expect(data).toBeDefined();\n expect((data![\"viewer\"] as any)[\"image\"][\"__typename\"]).toBeDefined();\n });\n\n it(\"should handle interface type\", async () => {\n const query = /* GraphQL */ `\n query {\n viewer {\n book {\n title\n __typename\n ... on TextBook {\n text\n }\n ... on ColoringBook {\n colors\n }\n }\n }\n }\n `;\n\n const mockedSchema = createMockSchema(schema, mocks);\n\n const { data, errors } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n expect(errors).not.toBeDefined();\n expect(data).toBeDefined();\n expect((data![\"viewer\"] as any)[\"book\"][\"__typename\"]).toBeDefined();\n });\n\n it(\"should handle custom scalars\", async () => {\n const query = /* GraphQL */ `\n query {\n viewer {\n book {\n title\n publishedAt\n }\n }\n }\n `;\n\n const mockedSchema = createMockSchema(schema, mocks);\n\n const { data, errors } = await graphql({\n schema: mockedSchema,\n source: query,\n });\n\n expect(errors).not.toBeDefined();\n expect(data).toBeDefined();\n expect((data![\"viewer\"] as any)[\"book\"][\"publishedAt\"]).toBe(mockDate);\n });\n});\n"]}
@@ -0,0 +1,3 @@
1
+ export { createTestSchema } from "./createTestSchema.js";
2
+ export { createSchemaFetch } from "./createSchemaFetch.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { createTestSchema } from "./createTestSchema.js";
2
+ export { createSchemaFetch } from "./createSchemaFetch.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/experimental/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC","sourcesContent":["export { createTestSchema } from \"./createTestSchema.js\";\nexport { createSchemaFetch } from \"./createSchemaFetch.js\";\n"]}
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@apollo/client/testing/experimental",
3
+ "type": "module",
4
+ "main": "experimental.cjs",
5
+ "module": "index.js",
6
+ "types": "index.d.ts",
7
+ "sideEffects": false
8
+ }
@@ -2,5 +2,4 @@ import "../utilities/globals/index.js";
2
2
  export type { MockedProviderProps } from "./react/MockedProvider.js";
3
3
  export { MockedProvider } from "./react/MockedProvider.js";
4
4
  export * from "./core/index.js";
5
- export { createMockSchema } from "./graphql-tools/utils.js";
6
5
  //# sourceMappingURL=index.d.ts.map
package/testing/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import "../utilities/globals/index.js";
2
2
  export { MockedProvider } from "./react/MockedProvider.js";
3
3
  export * from "./core/index.js";
4
- export { createMockSchema } from "./graphql-tools/utils.js";
5
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["import \"../utilities/globals/index.js\";\nexport type { MockedProviderProps } from \"./react/MockedProvider.js\";\nexport { MockedProvider } from \"./react/MockedProvider.js\";\nexport * from \"./core/index.js\";\nexport { createMockSchema } from \"./graphql-tools/utils.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,+BAA+B,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,cAAc,iBAAiB,CAAC","sourcesContent":["import \"../utilities/globals/index.js\";\nexport type { MockedProviderProps } from \"./react/MockedProvider.js\";\nexport { MockedProvider } from \"./react/MockedProvider.js\";\nexport * from \"./core/index.js\";\n"]}
@@ -62,108 +62,7 @@ export declare class RenderInstance<Snapshot> implements Render<Snapshot> {
62
62
  constructor(baseRender: BaseRender, snapshot: Snapshot, stringifiedDOM: string | undefined, renderedComponents: Array<string | React.ComponentType>);
63
63
  private _domSnapshot;
64
64
  get domSnapshot(): HTMLElement;
65
- get withinDOM(): () => {
66
- getByLabelText<T extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T;
67
- getAllByLabelText<T_1 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_1[];
68
- queryByLabelText<T_2 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_2 | null;
69
- queryAllByLabelText<T_3 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_3[];
70
- findByLabelText<T_4 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_4>;
71
- findAllByLabelText<T_5 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_5[]>;
72
- getByPlaceholderText<T_6 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_6;
73
- getAllByPlaceholderText<T_7 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_7[];
74
- queryByPlaceholderText<T_8 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_8 | null;
75
- queryAllByPlaceholderText<T_9 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_9[];
76
- findByPlaceholderText<T_10 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_10>;
77
- findAllByPlaceholderText<T_11 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_11[]>;
78
- getByText<T_12 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_12;
79
- getAllByText<T_13 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_13[];
80
- queryByText<T_14 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_14 | null;
81
- queryAllByText<T_15 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined): T_15[];
82
- findByText<T_16 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_16>;
83
- findAllByText<T_17 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_17[]>;
84
- getByAltText<T_18 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_18;
85
- getAllByAltText<T_19 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_19[];
86
- queryByAltText<T_20 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_20 | null;
87
- queryAllByAltText<T_21 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_21[];
88
- findByAltText<T_22 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_22>;
89
- findAllByAltText<T_23 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_23[]>;
90
- getByTitle<T_24 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_24;
91
- getAllByTitle<T_25 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_25[];
92
- queryByTitle<T_26 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_26 | null;
93
- queryAllByTitle<T_27 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_27[];
94
- findByTitle<T_28 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_28>;
95
- findAllByTitle<T_29 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_29[]>;
96
- getByDisplayValue<T_30 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_30;
97
- getAllByDisplayValue<T_31 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_31[];
98
- queryByDisplayValue<T_32 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_32 | null;
99
- queryAllByDisplayValue<T_33 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_33[];
100
- findByDisplayValue<T_34 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_34>;
101
- findAllByDisplayValue<T_35 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_35[]>;
102
- getByRole<T_36 extends HTMLElement = HTMLElement>(role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined): T_36;
103
- getAllByRole<T_37 extends HTMLElement = HTMLElement>(role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined): T_37[];
104
- queryByRole<T_38 extends HTMLElement = HTMLElement>(role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined): T_38 | null;
105
- queryAllByRole<T_39 extends HTMLElement = HTMLElement>(role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined): T_39[];
106
- findByRole<T_40 extends HTMLElement = HTMLElement>(role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_40>;
107
- findAllByRole<T_41 extends HTMLElement = HTMLElement>(role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_41[]>;
108
- getByTestId<T_42 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_42;
109
- getAllByTestId<T_43 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_43[];
110
- queryByTestId<T_44 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_44 | null;
111
- queryAllByTestId<T_45 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined): T_45[];
112
- findByTestId<T_46 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_46>;
113
- findAllByTestId<T_47 extends HTMLElement = HTMLElement>(id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined): Promise<T_47[]>;
114
- } & {
115
- getByLabelText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement;
116
- getAllByLabelText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement[];
117
- queryByLabelText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement | null;
118
- queryAllByLabelText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement[];
119
- findByLabelText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
120
- findAllByLabelText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
121
- getByPlaceholderText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement;
122
- getAllByPlaceholderText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
123
- queryByPlaceholderText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement | null;
124
- queryAllByPlaceholderText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
125
- findByPlaceholderText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
126
- findAllByPlaceholderText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
127
- getByText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement;
128
- getAllByText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement[];
129
- queryByText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement | null;
130
- queryAllByText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined) => HTMLElement[];
131
- findByText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
132
- findAllByText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
133
- getByAltText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement;
134
- getAllByAltText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
135
- queryByAltText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement | null;
136
- queryAllByAltText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
137
- findByAltText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
138
- findAllByAltText: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
139
- getByTitle: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement;
140
- getAllByTitle: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
141
- queryByTitle: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement | null;
142
- queryAllByTitle: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
143
- findByTitle: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
144
- findAllByTitle: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
145
- getByDisplayValue: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement;
146
- getAllByDisplayValue: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
147
- queryByDisplayValue: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement | null;
148
- queryAllByDisplayValue: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
149
- findByDisplayValue: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
150
- findAllByDisplayValue: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
151
- getByRole: (role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined) => HTMLElement;
152
- getAllByRole: (role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined) => HTMLElement[];
153
- queryByRole: (role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined) => HTMLElement | null;
154
- queryAllByRole: (role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined) => HTMLElement[];
155
- findByRole: (role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
156
- findAllByRole: (role: import("@testing-library/dom").ByRoleMatcher, options?: import("@testing-library/dom").ByRoleOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
157
- getByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement;
158
- getAllByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
159
- queryByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement | null;
160
- queryAllByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
161
- findByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
162
- findAllByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
163
- } & {
164
- debug: (element?: Element | HTMLDocument | (Element | HTMLDocument)[] | undefined, maxLength?: number | undefined, options?: import("pretty-format").PrettyFormatOptions | undefined) => void;
165
- logTestingPlaygroundURL: (element?: Element | HTMLDocument | undefined) => void;
166
- };
65
+ get withinDOM(): () => SyncScreen;
167
66
  }
168
67
  /** @internal */
169
68
  export declare function errorOnDomInteraction(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Render.js","sourceRoot":"","sources":["../../../../src/testing/internal/profile/Render.tsx"],"names":[],"mappings":"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","sourcesContent":["/* istanbul ignore file */\n\n/*\nSomething in this file does not compile correctly while measuring code coverage\nand will lead to a\n Uncaught [ReferenceError: cov_1zb8w312au is not defined]\nif we do not ignore this file in code coverage.\n\nAs we only use this file in our internal tests, we can safely ignore it.\n*/\n\nimport { within, screen } from \"@testing-library/dom\";\nimport { JSDOM, VirtualConsole } from \"jsdom\";\nimport { applyStackTrace, captureStackTrace } from \"./traces.js\";\n\n/** @internal */\nexport interface BaseRender {\n id: string;\n phase: \"mount\" | \"update\" | \"nested-update\";\n actualDuration: number;\n baseDuration: number;\n startTime: number;\n commitTime: number;\n /**\n * The number of renders that have happened so far (including this render).\n */\n count: number;\n}\n\ntype Screen = typeof screen;\n/** @internal */\nexport type SyncScreen = {\n [K in keyof Screen]: K extends `find${string}` ?\n {\n /** @deprecated A snapshot is static, so avoid async queries! */\n (...args: Parameters<Screen[K]>): ReturnType<Screen[K]>;\n }\n : Screen[K];\n};\n\n/** @internal */\nexport interface Render<Snapshot> extends BaseRender {\n /**\n * The snapshot, as returned by the `takeSnapshot` option of `profile`.\n * (If using `profileHook`, this is the return value of the hook.)\n */\n snapshot: Snapshot;\n /**\n * A DOM snapshot of the rendered component, if the `snapshotDOM`\n * option of `profile` was enabled.\n */\n readonly domSnapshot: HTMLElement;\n /**\n * Returns a callback to receive a `screen` instance that is scoped to the\n * DOM snapshot of this `Render` instance.\n * Note: this is used as a callback to prevent linter errors.\n * @example\n * ```diff\n * const { withinDOM } = RenderedComponent.takeRender();\n * -expect(screen.getByText(\"foo\")).toBeInTheDocument();\n * +expect(withinDOM().getByText(\"foo\")).toBeInTheDocument();\n * ```\n */\n withinDOM: () => SyncScreen;\n\n renderedComponents: Array<string | React.ComponentType>;\n}\n\n/** @internal */\nexport class RenderInstance<Snapshot> implements Render<Snapshot> {\n id: string;\n phase: \"mount\" | \"update\" | \"nested-update\";\n actualDuration: number;\n baseDuration: number;\n startTime: number;\n commitTime: number;\n count: number;\n\n constructor(\n baseRender: BaseRender,\n public snapshot: Snapshot,\n private stringifiedDOM: string | undefined,\n public renderedComponents: Array<string | React.ComponentType>\n ) {\n this.id = baseRender.id;\n this.phase = baseRender.phase;\n this.actualDuration = baseRender.actualDuration;\n this.baseDuration = baseRender.baseDuration;\n this.startTime = baseRender.startTime;\n this.commitTime = baseRender.commitTime;\n this.count = baseRender.count;\n }\n\n private _domSnapshot: HTMLElement | undefined;\n get domSnapshot() {\n if (this._domSnapshot) return this._domSnapshot;\n if (!this.stringifiedDOM) {\n throw new Error(\n \"DOM snapshot is not available - please set the `snapshotDOM` option\"\n );\n }\n\n const virtualConsole = new VirtualConsole();\n const stackTrace = captureStackTrace(\"RenderInstance.get\");\n virtualConsole.on(\"jsdomError\", (error) => {\n throw applyStackTrace(error, stackTrace);\n });\n\n const snapDOM = new JSDOM(this.stringifiedDOM, {\n runScripts: \"dangerously\",\n virtualConsole,\n });\n const document = snapDOM.window.document;\n const body = document.body;\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.text = `\n ${errorOnDomInteraction.toString()};\n ${errorOnDomInteraction.name}();\n `;\n body.appendChild(script);\n body.removeChild(script);\n\n return (this._domSnapshot = body);\n }\n\n get withinDOM() {\n const snapScreen = Object.assign(within(this.domSnapshot), {\n debug: (\n ...[dom = this.domSnapshot, ...rest]: Parameters<typeof screen.debug>\n ) => {\n screen.debug(dom, ...rest);\n },\n logTestingPlaygroundURL: (\n ...[dom = this.domSnapshot, ...rest]: Parameters<\n typeof screen.logTestingPlaygroundURL\n >\n ) => {\n screen.logTestingPlaygroundURL(dom, ...rest);\n },\n });\n return () => snapScreen;\n }\n}\n/** @internal */\nexport function errorOnDomInteraction() {\n const events: Array<keyof DocumentEventMap> = [\n \"auxclick\",\n \"blur\",\n \"change\",\n \"click\",\n \"copy\",\n \"cut\",\n \"dblclick\",\n \"drag\",\n \"dragend\",\n \"dragenter\",\n \"dragleave\",\n \"dragover\",\n \"dragstart\",\n \"drop\",\n \"focus\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keypress\",\n \"keyup\",\n \"mousedown\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"paste\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerenter\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"scroll\",\n \"select\",\n \"selectionchange\",\n \"selectstart\",\n \"submit\",\n \"toggle\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"wheel\",\n ];\n function warnOnDomInteraction() {\n throw new Error(`\n DOM interaction with a snapshot detected in test.\n Please don't interact with the DOM you get from \\`withinDOM\\`,\n but still use \\`screen\\' to get elements for simulating user interaction.\n `);\n }\n events.forEach((event) => {\n document.addEventListener(event, warnOnDomInteraction);\n });\n}\n"]}
1
+ {"version":3,"file":"Render.js","sourceRoot":"","sources":["../../../../src/testing/internal/profile/Render.tsx"],"names":[],"mappings":"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","sourcesContent":["/* istanbul ignore file */\n\n/*\nSomething in this file does not compile correctly while measuring code coverage\nand will lead to a\n Uncaught [ReferenceError: cov_1zb8w312au is not defined]\nif we do not ignore this file in code coverage.\n\nAs we only use this file in our internal tests, we can safely ignore it.\n*/\n\nimport { within, screen } from \"@testing-library/dom\";\nimport { JSDOM, VirtualConsole } from \"jsdom\";\nimport { applyStackTrace, captureStackTrace } from \"./traces.js\";\n\n/** @internal */\nexport interface BaseRender {\n id: string;\n phase: \"mount\" | \"update\" | \"nested-update\";\n actualDuration: number;\n baseDuration: number;\n startTime: number;\n commitTime: number;\n /**\n * The number of renders that have happened so far (including this render).\n */\n count: number;\n}\n\ntype Screen = typeof screen;\n/** @internal */\nexport type SyncScreen = {\n [K in keyof Screen]: K extends `find${string}` ?\n {\n /** @deprecated A snapshot is static, so avoid async queries! */\n (...args: Parameters<Screen[K]>): ReturnType<Screen[K]>;\n }\n : Screen[K];\n};\n\n/** @internal */\nexport interface Render<Snapshot> extends BaseRender {\n /**\n * The snapshot, as returned by the `takeSnapshot` option of `profile`.\n * (If using `profileHook`, this is the return value of the hook.)\n */\n snapshot: Snapshot;\n /**\n * A DOM snapshot of the rendered component, if the `snapshotDOM`\n * option of `profile` was enabled.\n */\n readonly domSnapshot: HTMLElement;\n /**\n * Returns a callback to receive a `screen` instance that is scoped to the\n * DOM snapshot of this `Render` instance.\n * Note: this is used as a callback to prevent linter errors.\n * @example\n * ```diff\n * const { withinDOM } = RenderedComponent.takeRender();\n * -expect(screen.getByText(\"foo\")).toBeInTheDocument();\n * +expect(withinDOM().getByText(\"foo\")).toBeInTheDocument();\n * ```\n */\n withinDOM: () => SyncScreen;\n\n renderedComponents: Array<string | React.ComponentType>;\n}\n\n/** @internal */\nexport class RenderInstance<Snapshot> implements Render<Snapshot> {\n id: string;\n phase: \"mount\" | \"update\" | \"nested-update\";\n actualDuration: number;\n baseDuration: number;\n startTime: number;\n commitTime: number;\n count: number;\n\n constructor(\n baseRender: BaseRender,\n public snapshot: Snapshot,\n private stringifiedDOM: string | undefined,\n public renderedComponents: Array<string | React.ComponentType>\n ) {\n this.id = baseRender.id;\n this.phase = baseRender.phase;\n this.actualDuration = baseRender.actualDuration;\n this.baseDuration = baseRender.baseDuration;\n this.startTime = baseRender.startTime;\n this.commitTime = baseRender.commitTime;\n this.count = baseRender.count;\n }\n\n private _domSnapshot: HTMLElement | undefined;\n get domSnapshot() {\n if (this._domSnapshot) return this._domSnapshot;\n if (!this.stringifiedDOM) {\n throw new Error(\n \"DOM snapshot is not available - please set the `snapshotDOM` option\"\n );\n }\n\n const virtualConsole = new VirtualConsole();\n const stackTrace = captureStackTrace(\"RenderInstance.get\");\n virtualConsole.on(\"jsdomError\", (error) => {\n throw applyStackTrace(error, stackTrace);\n });\n\n const snapDOM = new JSDOM(this.stringifiedDOM, {\n runScripts: \"dangerously\",\n virtualConsole,\n });\n const document = snapDOM.window.document;\n const body = document.body;\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.text = `\n ${errorOnDomInteraction.toString()};\n ${errorOnDomInteraction.name}();\n `;\n body.appendChild(script);\n body.removeChild(script);\n\n return (this._domSnapshot = body);\n }\n\n get withinDOM(): () => SyncScreen {\n const snapScreen = Object.assign(within(this.domSnapshot), {\n debug: (\n ...[dom = this.domSnapshot, ...rest]: Parameters<typeof screen.debug>\n ) => {\n screen.debug(dom, ...rest);\n },\n logTestingPlaygroundURL: (\n ...[dom = this.domSnapshot, ...rest]: Parameters<\n typeof screen.logTestingPlaygroundURL\n >\n ) => {\n screen.logTestingPlaygroundURL(dom, ...rest);\n },\n });\n return () => snapScreen;\n }\n}\n/** @internal */\nexport function errorOnDomInteraction() {\n const events: Array<keyof DocumentEventMap> = [\n \"auxclick\",\n \"blur\",\n \"change\",\n \"click\",\n \"copy\",\n \"cut\",\n \"dblclick\",\n \"drag\",\n \"dragend\",\n \"dragenter\",\n \"dragleave\",\n \"dragover\",\n \"dragstart\",\n \"drop\",\n \"focus\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keypress\",\n \"keyup\",\n \"mousedown\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"mouseup\",\n \"paste\",\n \"pointercancel\",\n \"pointerdown\",\n \"pointerenter\",\n \"pointerleave\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"pointerup\",\n \"scroll\",\n \"select\",\n \"selectionchange\",\n \"selectstart\",\n \"submit\",\n \"toggle\",\n \"touchcancel\",\n \"touchend\",\n \"touchmove\",\n \"touchstart\",\n \"wheel\",\n ];\n function warnOnDomInteraction() {\n throw new Error(`\n DOM interaction with a snapshot detected in test.\n Please don't interact with the DOM you get from \\`withinDOM\\`,\n but still use \\`screen\\' to get elements for simulating user interaction.\n `);\n }\n events.forEach((event) => {\n document.addEventListener(event, warnOnDomInteraction);\n });\n}\n"]}
@@ -37,6 +37,9 @@ export function createProfiler(_a) {
37
37
  var nextRender;
38
38
  var resolveNextRender;
39
39
  var rejectNextRender;
40
+ function resetNextRender() {
41
+ nextRender = resolveNextRender = rejectNextRender = undefined;
42
+ }
40
43
  var snapshotRef = { current: initialSnapshot };
41
44
  var replaceSnapshot = function (snap) {
42
45
  if (typeof snap === "function") {
@@ -96,7 +99,7 @@ export function createProfiler(_a) {
96
99
  rejectNextRender === null || rejectNextRender === void 0 ? void 0 : rejectNextRender(error);
97
100
  }
98
101
  finally {
99
- nextRender = resolveNextRender = rejectNextRender = undefined;
102
+ resetNextRender();
100
103
  }
101
104
  };
102
105
  var iteratorPosition = 0;
@@ -203,7 +206,8 @@ export function createProfiler(_a) {
203
206
  }),
204
207
  new Promise(function (_, reject) {
205
208
  return setTimeout(function () {
206
- return reject(applyStackTrace(new WaitForRenderTimeoutError(), stackTrace));
209
+ reject(applyStackTrace(new WaitForRenderTimeoutError(), stackTrace));
210
+ resetNextRender();
207
211
  }, timeout);
208
212
  }),
209
213
  ]);