@apollo/client 3.10.0-alpha.1 → 3.10.0-rc.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 (83) hide show
  1. package/.changeset/chatty-llamas-switch.md +5 -0
  2. package/.changeset/pre.json +6 -3
  3. package/.changeset/stupid-bears-cheat.md +5 -0
  4. package/.changeset/tiny-bugs-tap.md +5 -0
  5. package/.changeset/twelve-apples-vanish.md +5 -0
  6. package/CHANGELOG.md +37 -3
  7. package/apollo-client.cjs +53 -13
  8. package/apollo-client.cjs.map +1 -1
  9. package/apollo-client.min.cjs +1 -1
  10. package/cache/cache.cjs +8 -6
  11. package/cache/cache.cjs.map +1 -1
  12. package/cache/cache.cjs.native.js +8 -6
  13. package/cache/inmemory/readFromStore.js +8 -6
  14. package/cache/inmemory/readFromStore.js.map +1 -1
  15. package/core/core.cjs +1 -1
  16. package/core/core.cjs.map +1 -1
  17. package/core/core.cjs.native.js +1 -1
  18. package/dev/dev.cjs +18 -15
  19. package/dev/dev.cjs.map +1 -1
  20. package/dev/dev.cjs.native.js +18 -15
  21. package/dev/index.d.ts +2 -0
  22. package/dev/index.js +1 -0
  23. package/dev/index.js.map +1 -1
  24. package/dev/loadErrorMessageHandler.d.ts +6 -1
  25. package/dev/loadErrorMessageHandler.js +17 -14
  26. package/dev/loadErrorMessageHandler.js.map +1 -1
  27. package/dev/setErrorMessageHandler.d.ts +34 -0
  28. package/dev/setErrorMessageHandler.js +9 -0
  29. package/dev/setErrorMessageHandler.js.map +1 -0
  30. package/package.json +17 -16
  31. package/react/hooks/hooks.cjs +18 -1
  32. package/react/hooks/hooks.cjs.map +1 -1
  33. package/react/hooks/hooks.cjs.native.js +18 -1
  34. package/react/hooks/useBackgroundQuery.js +14 -0
  35. package/react/hooks/useBackgroundQuery.js.map +1 -1
  36. package/react/hooks/useReadQuery.js +10 -1
  37. package/react/hooks/useReadQuery.js.map +1 -1
  38. package/react/hooks/useSuspenseQuery.js +27 -0
  39. package/react/hooks/useSuspenseQuery.js.map +1 -1
  40. package/react/internal/cache/QueryReference.d.ts +3 -1
  41. package/react/internal/cache/QueryReference.js +33 -6
  42. package/react/internal/cache/QueryReference.js.map +1 -1
  43. package/react/internal/cache/SuspenseCache.d.ts +1 -0
  44. package/react/internal/cache/SuspenseCache.js +4 -0
  45. package/react/internal/cache/SuspenseCache.js.map +1 -1
  46. package/react/internal/internal.cjs +26 -5
  47. package/react/internal/internal.cjs.map +1 -1
  48. package/react/internal/internal.cjs.native.js +26 -5
  49. package/react/query-preloader/createQueryPreloader.d.ts +0 -1
  50. package/react/query-preloader/createQueryPreloader.js +0 -1
  51. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  52. package/react/react.cjs.map +1 -1
  53. package/testing/core/core.cjs +103 -0
  54. package/testing/core/core.cjs.map +1 -1
  55. package/testing/core/core.cjs.native.js +103 -0
  56. package/testing/core/createMockFetch.d.ts +38 -0
  57. package/testing/core/createMockFetch.js +79 -0
  58. package/testing/core/createMockFetch.js.map +1 -0
  59. package/testing/core/createProxiedSchema.d.ts +47 -0
  60. package/testing/core/createProxiedSchema.js +99 -0
  61. package/testing/core/createProxiedSchema.js.map +1 -0
  62. package/testing/core/index.d.ts +2 -0
  63. package/testing/core/index.js +2 -0
  64. package/testing/core/index.js.map +1 -1
  65. package/testing/graphql-tools/utils.d.ts +26 -0
  66. package/testing/graphql-tools/utils.js +172 -0
  67. package/testing/graphql-tools/utils.js.map +1 -0
  68. package/testing/graphql-tools/utils.test.d.ts +2 -0
  69. package/testing/graphql-tools/utils.test.js +139 -0
  70. package/testing/graphql-tools/utils.test.js.map +1 -0
  71. package/testing/index.d.ts +1 -0
  72. package/testing/index.js +1 -0
  73. package/testing/index.js.map +1 -1
  74. package/testing/testing.cjs +134 -0
  75. package/testing/testing.cjs.map +1 -1
  76. package/testing/testing.cjs.native.js +134 -0
  77. package/utilities/globals/globals.cjs +1 -1
  78. package/utilities/globals/globals.cjs.map +1 -1
  79. package/utilities/globals/globals.cjs.native.js +1 -1
  80. package/utilities/globals/invariantWrappers.d.ts +1 -1
  81. package/utilities/globals/invariantWrappers.js.map +1 -1
  82. package/version.js +1 -1
  83. package/.changeset/flat-singers-kiss.md +0 -5
@@ -0,0 +1,26 @@
1
+ import type { GraphQLSchema } from "graphql";
2
+ /**
3
+ * A function that accepts a static `schema` and a `mocks` object for specifying
4
+ * default scalar mocks and returns a `GraphQLSchema`.
5
+ *
6
+ * @param staticSchema - A static `GraphQLSchema`.
7
+ * @param mocks - An object containing scalar mocks.
8
+ * @returns A `GraphQLSchema` with scalar mocks.
9
+ *
10
+ * @example
11
+ * ```js
12
+ * const mockedSchema = createMockSchema(schema, {
13
+ ID: () => "1",
14
+ Int: () => 42,
15
+ String: () => "String",
16
+ Date: () => new Date("January 1, 2024 01:00:00").toJSON().split("T")[0],
17
+ });
18
+ * ```
19
+ * @since 3.10.0
20
+ * @alpha
21
+ */
22
+ declare const createMockSchema: (staticSchema: GraphQLSchema, mocks: {
23
+ [key: string]: any;
24
+ }) => GraphQLSchema;
25
+ export { createMockSchema };
26
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1,172 @@
1
+ import { __assign, __spreadArray } from "tslib";
2
+ import { GraphQLInterfaceType, GraphQLString, GraphQLUnionType, defaultFieldResolver, getNullableType, isAbstractType, isEnumType, isInterfaceType, isListType, isObjectType, isScalarType, isUnionType, } from "graphql";
3
+ import { isNonNullObject } from "../../utilities/index.js";
4
+ import { MapperKind, mapSchema, getRootTypeNames } from "@graphql-tools/utils";
5
+ // Taken from @graphql-tools/mock:
6
+ // https://github.com/ardatan/graphql-tools/blob/4b56b04d69b02919f6c5fa4f97d33da63f36e8c8/packages/mock/src/utils.ts#L20
7
+ var takeRandom = function (arr) { return arr[Math.floor(Math.random() * arr.length)]; };
8
+ /**
9
+ * A function that accepts a static `schema` and a `mocks` object for specifying
10
+ * default scalar mocks and returns a `GraphQLSchema`.
11
+ *
12
+ * @param staticSchema - A static `GraphQLSchema`.
13
+ * @param mocks - An object containing scalar mocks.
14
+ * @returns A `GraphQLSchema` with scalar mocks.
15
+ *
16
+ * @example
17
+ * ```js
18
+ * const mockedSchema = createMockSchema(schema, {
19
+ ID: () => "1",
20
+ Int: () => 42,
21
+ String: () => "String",
22
+ Date: () => new Date("January 1, 2024 01:00:00").toJSON().split("T")[0],
23
+ });
24
+ * ```
25
+ * @since 3.10.0
26
+ * @alpha
27
+ */
28
+ var createMockSchema = function (staticSchema, mocks) {
29
+ var _a;
30
+ // Taken from @graphql-tools/mock:
31
+ // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L613
32
+ var getType = function (typeName) {
33
+ var type = staticSchema.getType(typeName);
34
+ if (!type || !(isObjectType(type) || isInterfaceType(type))) {
35
+ throw new Error("".concat(typeName, " does not exist on schema or is not an object or interface"));
36
+ }
37
+ return type;
38
+ };
39
+ // Taken from @graphql-tools/mock:
40
+ // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L597
41
+ var getFieldType = function (typeName, fieldName) {
42
+ if (fieldName === "__typename") {
43
+ return GraphQLString;
44
+ }
45
+ var type = getType(typeName);
46
+ var field = type.getFields()[fieldName];
47
+ if (!field) {
48
+ throw new Error("".concat(fieldName, " does not exist on type ").concat(typeName));
49
+ }
50
+ return field.type;
51
+ };
52
+ // Taken from @graphql-tools/mock:
53
+ // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L527
54
+ var generateValueFromType = function (fieldType) {
55
+ var nullableType = getNullableType(fieldType);
56
+ if (isScalarType(nullableType)) {
57
+ var mockFn = mocks[nullableType.name];
58
+ if (typeof mockFn !== "function") {
59
+ throw new Error("No mock defined for type \"".concat(nullableType.name, "\""));
60
+ }
61
+ return mockFn();
62
+ }
63
+ else if (isEnumType(nullableType)) {
64
+ var mockFn = mocks[nullableType.name];
65
+ if (typeof mockFn === "function")
66
+ return mockFn();
67
+ var values = nullableType.getValues().map(function (v) { return v.value; });
68
+ return takeRandom(values);
69
+ }
70
+ else if (isObjectType(nullableType)) {
71
+ return {};
72
+ }
73
+ else if (isListType(nullableType)) {
74
+ return __spreadArray([], new Array(2), true).map(function () {
75
+ return generateValueFromType(nullableType.ofType);
76
+ });
77
+ }
78
+ else if (isAbstractType(nullableType)) {
79
+ var mock = mocks[nullableType.name];
80
+ var typeName = void 0;
81
+ var values = {};
82
+ if (!mock) {
83
+ typeName = takeRandom(staticSchema.getPossibleTypes(nullableType).map(function (t) { return t.name; }));
84
+ }
85
+ else if (typeof mock === "function") {
86
+ var mockRes = mock();
87
+ if (mockRes === null)
88
+ return null;
89
+ if (!isNonNullObject(mockRes)) {
90
+ throw new Error("Value returned by the mock for ".concat(nullableType.name, " is not an object or null"));
91
+ }
92
+ values = mockRes;
93
+ if (typeof values["__typename"] !== "string") {
94
+ throw new Error("Please return a __typename in \"".concat(nullableType.name, "\""));
95
+ }
96
+ typeName = values["__typename"];
97
+ }
98
+ else if (isNonNullObject(mock) &&
99
+ typeof mock["__typename"] === "function") {
100
+ var mockRes = mock["__typename"]();
101
+ if (typeof mockRes !== "string") {
102
+ throw new Error("'__typename' returned by the mock for abstract type ".concat(nullableType.name, " is not a string"));
103
+ }
104
+ typeName = mockRes;
105
+ }
106
+ else {
107
+ throw new Error("Please return a __typename in \"".concat(nullableType.name, "\""));
108
+ }
109
+ return typeName;
110
+ }
111
+ else {
112
+ throw new Error("".concat(nullableType, " not implemented"));
113
+ }
114
+ };
115
+ // Taken from @graphql-tools/mock:
116
+ // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/utils.ts#L53
117
+ var isRootType = function (type, schema) {
118
+ var rootTypeNames = getRootTypeNames(schema);
119
+ return rootTypeNames.has(type.name);
120
+ };
121
+ // Taken from @graphql-tools/mock:
122
+ // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/addMocksToSchema.ts#L123
123
+ var mockResolver = function (source, args, contex, info) {
124
+ var defaultResolvedValue = defaultFieldResolver(source, args, contex, info);
125
+ // priority to default resolved value
126
+ if (defaultResolvedValue !== undefined)
127
+ return defaultResolvedValue;
128
+ // we have to handle the root mutation, root query and root subscription types
129
+ // differently, because no resolver is called at the root
130
+ if (isRootType(info.parentType, info.schema)) {
131
+ return {
132
+ typeName: info.parentType.name,
133
+ key: "ROOT",
134
+ fieldName: info.fieldName,
135
+ fieldArgs: args,
136
+ };
137
+ }
138
+ if (defaultResolvedValue === undefined) {
139
+ var fieldType = getFieldType(info.parentType.name, info.fieldName);
140
+ return generateValueFromType(fieldType);
141
+ }
142
+ return undefined;
143
+ };
144
+ // Taken from @graphql-tools/mock:
145
+ // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/addMocksToSchema.ts#L176
146
+ return mapSchema(staticSchema, (_a = {},
147
+ _a[MapperKind.OBJECT_FIELD] = function (fieldConfig) {
148
+ var newFieldConfig = __assign({}, fieldConfig);
149
+ var oldResolver = fieldConfig.resolve;
150
+ if (!oldResolver) {
151
+ newFieldConfig.resolve = mockResolver;
152
+ }
153
+ return newFieldConfig;
154
+ },
155
+ _a[MapperKind.ABSTRACT_TYPE] = function (type) {
156
+ if (type.resolveType != null && type.resolveType.length) {
157
+ return;
158
+ }
159
+ var typeResolver = function (typename) {
160
+ return typename;
161
+ };
162
+ if (isUnionType(type)) {
163
+ return new GraphQLUnionType(__assign(__assign({}, type.toConfig()), { resolveType: typeResolver }));
164
+ }
165
+ else {
166
+ return new GraphQLInterfaceType(__assign(__assign({}, type.toConfig()), { resolveType: typeResolver }));
167
+ }
168
+ },
169
+ _a));
170
+ };
171
+ export { createMockSchema };
172
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/testing/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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1,139 @@
1
+ // Originally from @graphql-tools/mock
2
+ // https://github.com/ardatan/graphql-tools/blob/4b56b04d69b02919f6c5fa4f97d33da63f36e8c8/packages/mock/tests/addMocksToSchema.spec.ts
3
+ import { __awaiter, __generator } from "tslib";
4
+ import { buildSchema, graphql } from "graphql";
5
+ import { createMockSchema } from "./utils.js";
6
+ var mockDate = new Date().toJSON().split("T")[0];
7
+ var mocks = {
8
+ Int: function () { return 6; },
9
+ Float: function () { return 22.1; },
10
+ String: function () { return "string"; },
11
+ ID: function () { return "id"; },
12
+ Date: function () { return mockDate; },
13
+ };
14
+ var 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";
15
+ var schema = buildSchema(typeDefs);
16
+ describe("addMocksToSchema", function () {
17
+ it("basic", function () { return __awaiter(void 0, void 0, void 0, function () {
18
+ var query, mockedSchema, _a, data, errors, viewerData, data2, viewerData2;
19
+ return __generator(this, function (_b) {
20
+ switch (_b.label) {
21
+ case 0:
22
+ query = "\n query {\n viewer {\n id\n name\n age\n }\n }\n ";
23
+ mockedSchema = createMockSchema(schema, mocks);
24
+ return [4 /*yield*/, graphql({
25
+ schema: mockedSchema,
26
+ source: query,
27
+ })];
28
+ case 1:
29
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
30
+ expect(errors).not.toBeDefined();
31
+ expect(data).toBeDefined();
32
+ viewerData = data === null || data === void 0 ? void 0 : data["viewer"];
33
+ expect(typeof viewerData["id"]).toBe("string");
34
+ expect(typeof viewerData["name"]).toBe("string");
35
+ expect(typeof viewerData["age"]).toBe("number");
36
+ return [4 /*yield*/, graphql({
37
+ schema: mockedSchema,
38
+ source: query,
39
+ })];
40
+ case 2:
41
+ data2 = (_b.sent()).data;
42
+ viewerData2 = data2 === null || data2 === void 0 ? void 0 : data2["viewer"];
43
+ expect(viewerData2["id"]).toEqual(viewerData["id"]);
44
+ return [2 /*return*/];
45
+ }
46
+ });
47
+ }); });
48
+ it("handle _id key field", function () { return __awaiter(void 0, void 0, void 0, function () {
49
+ var query, mockedSchema, _a, data, errors, viewerData, data2, viewerData2;
50
+ return __generator(this, function (_b) {
51
+ switch (_b.label) {
52
+ case 0:
53
+ query = "\n query {\n author {\n _id\n name\n }\n }\n ";
54
+ mockedSchema = createMockSchema(schema, mocks);
55
+ return [4 /*yield*/, graphql({
56
+ schema: mockedSchema,
57
+ source: query,
58
+ })];
59
+ case 1:
60
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
61
+ expect(errors).not.toBeDefined();
62
+ expect(data).toBeDefined();
63
+ viewerData = data === null || data === void 0 ? void 0 : data["author"];
64
+ expect(typeof viewerData["_id"]).toBe("string");
65
+ expect(typeof viewerData["name"]).toBe("string");
66
+ return [4 /*yield*/, graphql({
67
+ schema: mockedSchema,
68
+ source: query,
69
+ })];
70
+ case 2:
71
+ data2 = (_b.sent()).data;
72
+ viewerData2 = data2 === null || data2 === void 0 ? void 0 : data2["author"];
73
+ expect(viewerData2["_id"]).toEqual(viewerData["_id"]);
74
+ return [2 /*return*/];
75
+ }
76
+ });
77
+ }); });
78
+ it("should handle union type", function () { return __awaiter(void 0, void 0, void 0, function () {
79
+ var query, mockedSchema, _a, data, errors;
80
+ return __generator(this, function (_b) {
81
+ switch (_b.label) {
82
+ case 0:
83
+ query = "\n query {\n viewer {\n image {\n __typename\n ... on UserImageURL {\n url\n }\n ... on UserImageSolidColor {\n color\n }\n }\n }\n }\n ";
84
+ mockedSchema = createMockSchema(schema, mocks);
85
+ return [4 /*yield*/, graphql({
86
+ schema: mockedSchema,
87
+ source: query,
88
+ })];
89
+ case 1:
90
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
91
+ expect(errors).not.toBeDefined();
92
+ expect(data).toBeDefined();
93
+ expect(data["viewer"]["image"]["__typename"]).toBeDefined();
94
+ return [2 /*return*/];
95
+ }
96
+ });
97
+ }); });
98
+ it("should handle interface type", function () { return __awaiter(void 0, void 0, void 0, function () {
99
+ var query, mockedSchema, _a, data, errors;
100
+ return __generator(this, function (_b) {
101
+ switch (_b.label) {
102
+ case 0:
103
+ query = "\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 ";
104
+ mockedSchema = createMockSchema(schema, mocks);
105
+ return [4 /*yield*/, graphql({
106
+ schema: mockedSchema,
107
+ source: query,
108
+ })];
109
+ case 1:
110
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
111
+ expect(errors).not.toBeDefined();
112
+ expect(data).toBeDefined();
113
+ expect(data["viewer"]["book"]["__typename"]).toBeDefined();
114
+ return [2 /*return*/];
115
+ }
116
+ });
117
+ }); });
118
+ it("should handle custom scalars", function () { return __awaiter(void 0, void 0, void 0, function () {
119
+ var query, mockedSchema, _a, data, errors;
120
+ return __generator(this, function (_b) {
121
+ switch (_b.label) {
122
+ case 0:
123
+ query = "\n query {\n viewer {\n book {\n title\n publishedAt\n }\n }\n }\n ";
124
+ mockedSchema = createMockSchema(schema, mocks);
125
+ return [4 /*yield*/, graphql({
126
+ schema: mockedSchema,
127
+ source: query,
128
+ })];
129
+ case 1:
130
+ _a = _b.sent(), data = _a.data, errors = _a.errors;
131
+ expect(errors).not.toBeDefined();
132
+ expect(data).toBeDefined();
133
+ expect(data["viewer"]["book"]["publishedAt"]).toBe(mockDate);
134
+ return [2 /*return*/];
135
+ }
136
+ });
137
+ }); });
138
+ });
139
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../src/testing/graphql-tools/utils.test.ts"],"names":[],"mappings":"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","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"]}
@@ -2,4 +2,5 @@ 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";
5
6
  //# sourceMappingURL=index.d.ts.map
package/testing/index.js CHANGED
@@ -1,4 +1,5 @@
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";
4
5
  //# 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","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"]}
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"]}
@@ -9,6 +9,9 @@ var core$1 = require('../core');
9
9
  var cache = require('../cache');
10
10
  var context = require('../react/context');
11
11
  var core = require('./core');
12
+ var graphql = require('graphql');
13
+ var utilities = require('../utilities');
14
+ var utils = require('@graphql-tools/utils');
12
15
 
13
16
  function _interopNamespace(e) {
14
17
  if (e && e.__esModule) return e;
@@ -57,7 +60,138 @@ var MockedProvider = (function (_super) {
57
60
  return MockedProvider;
58
61
  }(React__namespace.Component));
59
62
 
63
+ var takeRandom = function (arr) { return arr[Math.floor(Math.random() * arr.length)]; };
64
+ var createMockSchema = function (staticSchema, mocks) {
65
+ var _a;
66
+ var getType = function (typeName) {
67
+ var type = staticSchema.getType(typeName);
68
+ if (!type || !(graphql.isObjectType(type) || graphql.isInterfaceType(type))) {
69
+ throw new Error("".concat(typeName, " does not exist on schema or is not an object or interface"));
70
+ }
71
+ return type;
72
+ };
73
+ var getFieldType = function (typeName, fieldName) {
74
+ if (fieldName === "__typename") {
75
+ return graphql.GraphQLString;
76
+ }
77
+ var type = getType(typeName);
78
+ var field = type.getFields()[fieldName];
79
+ if (!field) {
80
+ throw new Error("".concat(fieldName, " does not exist on type ").concat(typeName));
81
+ }
82
+ return field.type;
83
+ };
84
+ var generateValueFromType = function (fieldType) {
85
+ var nullableType = graphql.getNullableType(fieldType);
86
+ if (graphql.isScalarType(nullableType)) {
87
+ var mockFn = mocks[nullableType.name];
88
+ if (typeof mockFn !== "function") {
89
+ throw new Error("No mock defined for type \"".concat(nullableType.name, "\""));
90
+ }
91
+ return mockFn();
92
+ }
93
+ else if (graphql.isEnumType(nullableType)) {
94
+ var mockFn = mocks[nullableType.name];
95
+ if (typeof mockFn === "function")
96
+ return mockFn();
97
+ var values = nullableType.getValues().map(function (v) { return v.value; });
98
+ return takeRandom(values);
99
+ }
100
+ else if (graphql.isObjectType(nullableType)) {
101
+ return {};
102
+ }
103
+ else if (graphql.isListType(nullableType)) {
104
+ return tslib.__spreadArray([], new Array(2), true).map(function () {
105
+ return generateValueFromType(nullableType.ofType);
106
+ });
107
+ }
108
+ else if (graphql.isAbstractType(nullableType)) {
109
+ var mock = mocks[nullableType.name];
110
+ var typeName = void 0;
111
+ var values = {};
112
+ if (!mock) {
113
+ typeName = takeRandom(staticSchema.getPossibleTypes(nullableType).map(function (t) { return t.name; }));
114
+ }
115
+ else if (typeof mock === "function") {
116
+ var mockRes = mock();
117
+ if (mockRes === null)
118
+ return null;
119
+ if (!utilities.isNonNullObject(mockRes)) {
120
+ throw new Error("Value returned by the mock for ".concat(nullableType.name, " is not an object or null"));
121
+ }
122
+ values = mockRes;
123
+ if (typeof values["__typename"] !== "string") {
124
+ throw new Error("Please return a __typename in \"".concat(nullableType.name, "\""));
125
+ }
126
+ typeName = values["__typename"];
127
+ }
128
+ else if (utilities.isNonNullObject(mock) &&
129
+ typeof mock["__typename"] === "function") {
130
+ var mockRes = mock["__typename"]();
131
+ if (typeof mockRes !== "string") {
132
+ throw new Error("'__typename' returned by the mock for abstract type ".concat(nullableType.name, " is not a string"));
133
+ }
134
+ typeName = mockRes;
135
+ }
136
+ else {
137
+ throw new Error("Please return a __typename in \"".concat(nullableType.name, "\""));
138
+ }
139
+ return typeName;
140
+ }
141
+ else {
142
+ throw new Error("".concat(nullableType, " not implemented"));
143
+ }
144
+ };
145
+ var isRootType = function (type, schema) {
146
+ var rootTypeNames = utils.getRootTypeNames(schema);
147
+ return rootTypeNames.has(type.name);
148
+ };
149
+ var mockResolver = function (source, args, contex, info) {
150
+ var defaultResolvedValue = graphql.defaultFieldResolver(source, args, contex, info);
151
+ if (defaultResolvedValue !== undefined)
152
+ return defaultResolvedValue;
153
+ if (isRootType(info.parentType, info.schema)) {
154
+ return {
155
+ typeName: info.parentType.name,
156
+ key: "ROOT",
157
+ fieldName: info.fieldName,
158
+ fieldArgs: args,
159
+ };
160
+ }
161
+ if (defaultResolvedValue === undefined) {
162
+ var fieldType = getFieldType(info.parentType.name, info.fieldName);
163
+ return generateValueFromType(fieldType);
164
+ }
165
+ return undefined;
166
+ };
167
+ return utils.mapSchema(staticSchema, (_a = {},
168
+ _a[utils.MapperKind.OBJECT_FIELD] = function (fieldConfig) {
169
+ var newFieldConfig = tslib.__assign({}, fieldConfig);
170
+ var oldResolver = fieldConfig.resolve;
171
+ if (!oldResolver) {
172
+ newFieldConfig.resolve = mockResolver;
173
+ }
174
+ return newFieldConfig;
175
+ },
176
+ _a[utils.MapperKind.ABSTRACT_TYPE] = function (type) {
177
+ if (type.resolveType != null && type.resolveType.length) {
178
+ return;
179
+ }
180
+ var typeResolver = function (typename) {
181
+ return typename;
182
+ };
183
+ if (graphql.isUnionType(type)) {
184
+ return new graphql.GraphQLUnionType(tslib.__assign(tslib.__assign({}, type.toConfig()), { resolveType: typeResolver }));
185
+ }
186
+ else {
187
+ return new graphql.GraphQLInterfaceType(tslib.__assign(tslib.__assign({}, type.toConfig()), { resolveType: typeResolver }));
188
+ }
189
+ },
190
+ _a));
191
+ };
192
+
60
193
  exports.MockedProvider = MockedProvider;
194
+ exports.createMockSchema = createMockSchema;
61
195
  for (var k in core) {
62
196
  if (k !== 'default' && !exports.hasOwnProperty(k)) exports[k] = core[k];
63
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"testing.cjs","sources":["react/MockedProvider.js"],"sourcesContent":["import { __assign, __extends } from \"tslib\";\nimport * as React from \"react\";\nimport { ApolloClient } from \"../../core/index.js\";\nimport { InMemoryCache as Cache } from \"../../cache/index.js\";\nimport { ApolloProvider } from \"../../react/context/index.js\";\nimport { MockLink } from \"../core/index.js\";\nvar MockedProvider = /** @class */ (function (_super) {\n __extends(MockedProvider, _super);\n function MockedProvider(props) {\n var _this = _super.call(this, props) || this;\n var _a = _this.props, mocks = _a.mocks, addTypename = _a.addTypename, defaultOptions = _a.defaultOptions, cache = _a.cache, resolvers = _a.resolvers, link = _a.link, showWarnings = _a.showWarnings, _b = _a.connectToDevTools, connectToDevTools = _b === void 0 ? false : _b;\n var client = new ApolloClient({\n cache: cache || new Cache({ addTypename: addTypename }),\n defaultOptions: defaultOptions,\n connectToDevTools: connectToDevTools,\n link: link || new MockLink(mocks || [], addTypename, { showWarnings: showWarnings }),\n resolvers: resolvers,\n });\n _this.state = {\n client: client,\n };\n return _this;\n }\n MockedProvider.prototype.render = function () {\n var _a = this.props, children = _a.children, childProps = _a.childProps;\n var client = this.state.client;\n return React.isValidElement(children) ?\n React.createElement(ApolloProvider, { client: client }, React.cloneElement(React.Children.only(children), __assign({}, childProps)))\n : null;\n };\n MockedProvider.prototype.componentWillUnmount = function () {\n // Since this.state.client was created in the constructor, it's this\n // MockedProvider's responsibility to terminate it.\n this.state.client.stop();\n };\n MockedProvider.defaultProps = {\n addTypename: true,\n };\n return MockedProvider;\n}(React.Component));\nexport { MockedProvider };\n//# sourceMappingURL=MockedProvider.js.map"],"names":["__extends","cache","ApolloClient","Cache","MockLink","React","ApolloProvider","__assign"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAMG,IAAC,cAAc,KAAkB,UAAU,MAAM,EAAE;AACtD,IAAIA,eAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtC,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;AACrD,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,cAAc,GAAG,EAAE,CAAC,cAAc,EAAEC,OAAK,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;AACxR,QAAQ,IAAI,MAAM,GAAG,IAAIC,mBAAY,CAAC;AACtC,YAAY,KAAK,EAAED,OAAK,IAAI,IAAIE,mBAAK,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACnE,YAAY,cAAc,EAAE,cAAc;AAC1C,YAAY,iBAAiB,EAAE,iBAAiB;AAChD,YAAY,IAAI,EAAE,IAAI,IAAI,IAAIC,aAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAChG,YAAY,SAAS,EAAE,SAAS;AAChC,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,CAAC,KAAK,GAAG;AACtB,YAAY,MAAM,EAAE,MAAM;AAC1B,SAAS,CAAC;AACV,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAClD,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;AAChF,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACvC,QAAQ,OAAOC,gBAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7C,YAAYA,gBAAK,CAAC,aAAa,CAACC,sBAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAED,gBAAK,CAAC,YAAY,CAACA,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAEE,cAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AAChJ,cAAc,IAAI,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,cAAc,CAAC,SAAS,CAAC,oBAAoB,GAAG,YAAY;AAGhE,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,cAAc,CAAC,YAAY,GAAG;AAClC,QAAQ,WAAW,EAAE,IAAI;AACzB,KAAK,CAAC;AACN,IAAI,OAAO,cAAc,CAAC;AAC1B,CAAC,CAACF,gBAAK,CAAC,SAAS,CAAC;;;;;;;"}
1
+ {"version":3,"file":"testing.cjs","sources":["react/MockedProvider.js","graphql-tools/utils.js"],"sourcesContent":["import { __assign, __extends } from \"tslib\";\nimport * as React from \"react\";\nimport { ApolloClient } from \"../../core/index.js\";\nimport { InMemoryCache as Cache } from \"../../cache/index.js\";\nimport { ApolloProvider } from \"../../react/context/index.js\";\nimport { MockLink } from \"../core/index.js\";\nvar MockedProvider = /** @class */ (function (_super) {\n __extends(MockedProvider, _super);\n function MockedProvider(props) {\n var _this = _super.call(this, props) || this;\n var _a = _this.props, mocks = _a.mocks, addTypename = _a.addTypename, defaultOptions = _a.defaultOptions, cache = _a.cache, resolvers = _a.resolvers, link = _a.link, showWarnings = _a.showWarnings, _b = _a.connectToDevTools, connectToDevTools = _b === void 0 ? false : _b;\n var client = new ApolloClient({\n cache: cache || new Cache({ addTypename: addTypename }),\n defaultOptions: defaultOptions,\n connectToDevTools: connectToDevTools,\n link: link || new MockLink(mocks || [], addTypename, { showWarnings: showWarnings }),\n resolvers: resolvers,\n });\n _this.state = {\n client: client,\n };\n return _this;\n }\n MockedProvider.prototype.render = function () {\n var _a = this.props, children = _a.children, childProps = _a.childProps;\n var client = this.state.client;\n return React.isValidElement(children) ?\n React.createElement(ApolloProvider, { client: client }, React.cloneElement(React.Children.only(children), __assign({}, childProps)))\n : null;\n };\n MockedProvider.prototype.componentWillUnmount = function () {\n // Since this.state.client was created in the constructor, it's this\n // MockedProvider's responsibility to terminate it.\n this.state.client.stop();\n };\n MockedProvider.defaultProps = {\n addTypename: true,\n };\n return MockedProvider;\n}(React.Component));\nexport { MockedProvider };\n//# sourceMappingURL=MockedProvider.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { GraphQLInterfaceType, GraphQLString, GraphQLUnionType, defaultFieldResolver, getNullableType, isAbstractType, isEnumType, isInterfaceType, isListType, isObjectType, isScalarType, isUnionType, } from \"graphql\";\nimport { isNonNullObject } from \"../../utilities/index.js\";\nimport { MapperKind, mapSchema, getRootTypeNames } from \"@graphql-tools/utils\";\n// Taken from @graphql-tools/mock:\n// https://github.com/ardatan/graphql-tools/blob/4b56b04d69b02919f6c5fa4f97d33da63f36e8c8/packages/mock/src/utils.ts#L20\nvar takeRandom = function (arr) { return arr[Math.floor(Math.random() * arr.length)]; };\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 */\nvar createMockSchema = function (staticSchema, mocks) {\n var _a;\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L613\n var getType = function (typeName) {\n var type = staticSchema.getType(typeName);\n if (!type || !(isObjectType(type) || isInterfaceType(type))) {\n throw new Error(\"\".concat(typeName, \" does not exist on schema or is not an object or interface\"));\n }\n return type;\n };\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L597\n var getFieldType = function (typeName, fieldName) {\n if (fieldName === \"__typename\") {\n return GraphQLString;\n }\n var type = getType(typeName);\n var field = type.getFields()[fieldName];\n if (!field) {\n throw new Error(\"\".concat(fieldName, \" does not exist on type \").concat(typeName));\n }\n return field.type;\n };\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/MockStore.ts#L527\n var generateValueFromType = function (fieldType) {\n var nullableType = getNullableType(fieldType);\n if (isScalarType(nullableType)) {\n var mockFn = mocks[nullableType.name];\n if (typeof mockFn !== \"function\") {\n throw new Error(\"No mock defined for type \\\"\".concat(nullableType.name, \"\\\"\"));\n }\n return mockFn();\n }\n else if (isEnumType(nullableType)) {\n var mockFn = mocks[nullableType.name];\n if (typeof mockFn === \"function\")\n return mockFn();\n var values = nullableType.getValues().map(function (v) { return v.value; });\n return takeRandom(values);\n }\n else if (isObjectType(nullableType)) {\n return {};\n }\n else if (isListType(nullableType)) {\n return __spreadArray([], new Array(2), true).map(function () {\n return generateValueFromType(nullableType.ofType);\n });\n }\n else if (isAbstractType(nullableType)) {\n var mock = mocks[nullableType.name];\n var typeName = void 0;\n var values = {};\n if (!mock) {\n typeName = takeRandom(staticSchema.getPossibleTypes(nullableType).map(function (t) { return t.name; }));\n }\n else if (typeof mock === \"function\") {\n var mockRes = mock();\n if (mockRes === null)\n return null;\n if (!isNonNullObject(mockRes)) {\n throw new Error(\"Value returned by the mock for \".concat(nullableType.name, \" is not an object or null\"));\n }\n values = mockRes;\n if (typeof values[\"__typename\"] !== \"string\") {\n throw new Error(\"Please return a __typename in \\\"\".concat(nullableType.name, \"\\\"\"));\n }\n typeName = values[\"__typename\"];\n }\n else if (isNonNullObject(mock) &&\n typeof mock[\"__typename\"] === \"function\") {\n var mockRes = mock[\"__typename\"]();\n if (typeof mockRes !== \"string\") {\n throw new Error(\"'__typename' returned by the mock for abstract type \".concat(nullableType.name, \" is not a string\"));\n }\n typeName = mockRes;\n }\n else {\n throw new Error(\"Please return a __typename in \\\"\".concat(nullableType.name, \"\\\"\"));\n }\n return typeName;\n }\n else {\n throw new Error(\"\".concat(nullableType, \" not implemented\"));\n }\n };\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/utils.ts#L53\n var isRootType = function (type, schema) {\n var rootTypeNames = getRootTypeNames(schema);\n return rootTypeNames.has(type.name);\n };\n // Taken from @graphql-tools/mock:\n // https://github.com/ardatan/graphql-tools/blob/5ed60e44f94868f976cd28fe1b6a764fb146bbe9/packages/mock/src/addMocksToSchema.ts#L123\n var mockResolver = function (source, args, contex, info) {\n var defaultResolvedValue = defaultFieldResolver(source, args, contex, info);\n // priority to default resolved value\n if (defaultResolvedValue !== undefined)\n return defaultResolvedValue;\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 if (defaultResolvedValue === undefined) {\n var fieldType = getFieldType(info.parentType.name, info.fieldName);\n return generateValueFromType(fieldType);\n }\n return undefined;\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, (_a = {},\n _a[MapperKind.OBJECT_FIELD] = function (fieldConfig) {\n var newFieldConfig = __assign({}, fieldConfig);\n var oldResolver = fieldConfig.resolve;\n if (!oldResolver) {\n newFieldConfig.resolve = mockResolver;\n }\n return newFieldConfig;\n },\n _a[MapperKind.ABSTRACT_TYPE] = function (type) {\n if (type.resolveType != null && type.resolveType.length) {\n return;\n }\n var typeResolver = function (typename) {\n return typename;\n };\n if (isUnionType(type)) {\n return new GraphQLUnionType(__assign(__assign({}, type.toConfig()), { resolveType: typeResolver }));\n }\n else {\n return new GraphQLInterfaceType(__assign(__assign({}, type.toConfig()), { resolveType: typeResolver }));\n }\n },\n _a));\n};\nexport { createMockSchema };\n//# sourceMappingURL=utils.js.map"],"names":["__extends","cache","ApolloClient","Cache","MockLink","React","ApolloProvider","__assign","isObjectType","isInterfaceType","GraphQLString","getNullableType","isScalarType","isEnumType","isListType","__spreadArray","isAbstractType","isNonNullObject","getRootTypeNames","defaultFieldResolver","mapSchema","MapperKind","isUnionType","GraphQLUnionType","GraphQLInterfaceType"],"mappings":"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"}