@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.
- package/CHANGELOG.md +60 -0
- package/apollo-client.cjs +18 -7
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/index.d.ts +1 -1
- package/cache/index.js.map +1 -1
- package/core/ApolloClient.js +1 -0
- package/core/ApolloClient.js.map +1 -1
- package/core/core.cjs +2 -1
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +2 -1
- package/core/index.d.ts +1 -1
- package/core/index.js.map +1 -1
- package/dev/dev.cjs +1 -1
- package/dev/dev.cjs.map +1 -1
- package/dev/dev.cjs.native.js +1 -1
- package/package.json +2 -1
- package/react/hooks/hooks.cjs +10 -1
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +10 -1
- package/react/hooks/internal/wrapHook.d.ts +2 -1
- package/react/hooks/internal/wrapHook.js.map +1 -1
- package/react/hooks/useQueryRefHandlers.js +12 -0
- package/react/hooks/useQueryRefHandlers.js.map +1 -1
- package/react/hooks/useReadQuery.js +9 -1
- package/react/hooks/useReadQuery.js.map +1 -1
- package/react/internal/cache/QueryReference.js +6 -5
- package/react/internal/cache/QueryReference.js.map +1 -1
- package/react/internal/internal.cjs +6 -5
- package/react/internal/internal.cjs.map +1 -1
- package/react/internal/internal.cjs.native.js +6 -5
- package/testing/core/core.cjs +0 -103
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +0 -103
- package/testing/core/index.d.ts +0 -2
- package/testing/core/index.js +0 -2
- package/testing/core/index.js.map +1 -1
- package/testing/{core/createMockFetch.d.ts → experimental/createSchemaFetch.d.ts} +15 -10
- package/testing/experimental/createSchemaFetch.js +99 -0
- package/testing/experimental/createSchemaFetch.js.map +1 -0
- package/testing/{core/createProxiedSchema.d.ts → experimental/createTestSchema.d.ts} +26 -18
- package/testing/{core/createProxiedSchema.js → experimental/createTestSchema.js} +34 -23
- package/testing/experimental/createTestSchema.js.map +1 -0
- package/testing/experimental/experimental.cjs +274 -0
- package/testing/experimental/experimental.cjs.map +1 -0
- package/testing/experimental/experimental.cjs.native.js +274 -0
- package/testing/{graphql-tools → experimental/graphql-tools}/utils.js +1 -1
- package/testing/experimental/graphql-tools/utils.js.map +1 -0
- package/testing/experimental/graphql-tools/utils.test.js.map +1 -0
- package/testing/experimental/index.d.ts +3 -0
- package/testing/experimental/index.js +3 -0
- package/testing/experimental/index.js.map +1 -0
- package/testing/experimental/package.json +8 -0
- package/testing/index.d.ts +0 -1
- package/testing/index.js +0 -1
- package/testing/index.js.map +1 -1
- package/testing/internal/profile/Render.d.ts +1 -102
- package/testing/internal/profile/Render.js.map +1 -1
- package/testing/internal/profile/profile.js +6 -2
- package/testing/internal/profile/profile.js.map +1 -1
- package/testing/testing.cjs +0 -134
- package/testing/testing.cjs.map +1 -1
- package/testing/testing.cjs.native.js +0 -134
- package/utilities/globals/globals.cjs +1 -1
- package/utilities/globals/globals.cjs.map +1 -1
- package/utilities/globals/globals.cjs.native.js +1 -1
- package/version.js +1 -1
- package/.changeset/chatty-llamas-switch.md +0 -5
- package/.changeset/pre.json +0 -14
- package/.changeset/stupid-bears-cheat.md +0 -5
- package/.changeset/tasty-pillows-ring.md +0 -5
- package/.changeset/tiny-bugs-tap.md +0 -5
- package/.changeset/twelve-apples-vanish.md +0 -5
- package/testing/core/createMockFetch.js +0 -79
- package/testing/core/createMockFetch.js.map +0 -1
- package/testing/core/createProxiedSchema.js.map +0 -1
- package/testing/graphql-tools/utils.js.map +0 -1
- package/testing/graphql-tools/utils.test.js.map +0 -1
- /package/testing/{graphql-tools → experimental/graphql-tools}/utils.d.ts +0 -0
- /package/testing/{graphql-tools → experimental/graphql-tools}/utils.test.d.ts +0 -0
- /package/testing/{graphql-tools → experimental/graphql-tools}/utils.test.js +0 -0
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __generator } from "tslib";
|
|
2
|
-
import { execute, validate } from "graphql";
|
|
3
|
-
import { ApolloError, gql } from "../../core/index.js";
|
|
4
|
-
import { withCleanup } from "../internal/index.js";
|
|
5
|
-
/**
|
|
6
|
-
* A function that accepts a static `schema` and a `mockFetchOpts` object and
|
|
7
|
-
* returns a disposable object with `mock` and `restore` functions.
|
|
8
|
-
*
|
|
9
|
-
* The `mock` function is a mock fetch function that is set on the global
|
|
10
|
-
* `window` object. This function intercepts any fetch requests and
|
|
11
|
-
* returns a response by executing the operation against the provided schema.
|
|
12
|
-
*
|
|
13
|
-
* The `restore` function is a cleanup function that will restore the previous
|
|
14
|
-
* `fetch`. It is automatically called if the function's return value is
|
|
15
|
-
* declared with `using`. If your environment does not support the language
|
|
16
|
-
* feature `using`, you should manually invoke the `restore` function.
|
|
17
|
-
*
|
|
18
|
-
* @param schema - A `GraphQLSchema`.
|
|
19
|
-
* @param mockFetchOpts - Configuration options.
|
|
20
|
-
* @returns An object with both `mock` and `restore` functions.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```js
|
|
24
|
-
* using _fetch = createMockFetch(schema); // automatically restores fetch after exiting the block
|
|
25
|
-
*
|
|
26
|
-
* const { restore } = createMockFetch(schema);
|
|
27
|
-
* restore(); // manually restore fetch if `using` is not supported
|
|
28
|
-
* ```
|
|
29
|
-
* @since 3.10.0
|
|
30
|
-
* @alpha
|
|
31
|
-
*/
|
|
32
|
-
var createMockFetch = function (schema, mockFetchOpts) {
|
|
33
|
-
if (mockFetchOpts === void 0) { mockFetchOpts = { validate: true }; }
|
|
34
|
-
var prevFetch = window.fetch;
|
|
35
|
-
var mockFetch = function (_uri, options) {
|
|
36
|
-
return new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
|
|
37
|
-
var body, document, validationErrors, result, stringifiedResult;
|
|
38
|
-
return __generator(this, function (_a) {
|
|
39
|
-
switch (_a.label) {
|
|
40
|
-
case 0:
|
|
41
|
-
body = JSON.parse(options.body);
|
|
42
|
-
document = gql(body.query);
|
|
43
|
-
if (mockFetchOpts.validate) {
|
|
44
|
-
validationErrors = [];
|
|
45
|
-
try {
|
|
46
|
-
validationErrors = validate(schema, document);
|
|
47
|
-
}
|
|
48
|
-
catch (e) {
|
|
49
|
-
validationErrors = [
|
|
50
|
-
new ApolloError({ graphQLErrors: [e] }),
|
|
51
|
-
];
|
|
52
|
-
}
|
|
53
|
-
if ((validationErrors === null || validationErrors === void 0 ? void 0 : validationErrors.length) > 0) {
|
|
54
|
-
return [2 /*return*/, resolve(new Response(JSON.stringify({ errors: validationErrors })))];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return [4 /*yield*/, execute({
|
|
58
|
-
schema: schema,
|
|
59
|
-
document: document,
|
|
60
|
-
variableValues: body.variables,
|
|
61
|
-
operationName: body.operationName,
|
|
62
|
-
})];
|
|
63
|
-
case 1:
|
|
64
|
-
result = _a.sent();
|
|
65
|
-
stringifiedResult = JSON.stringify(result);
|
|
66
|
-
resolve(new Response(stringifiedResult));
|
|
67
|
-
return [2 /*return*/];
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}); });
|
|
71
|
-
};
|
|
72
|
-
window.fetch = mockFetch;
|
|
73
|
-
var restore = function () {
|
|
74
|
-
window.fetch = prevFetch;
|
|
75
|
-
};
|
|
76
|
-
return withCleanup({ mock: mockFetch, restore: restore }, restore);
|
|
77
|
-
};
|
|
78
|
-
export { createMockFetch };
|
|
79
|
-
//# sourceMappingURL=createMockFetch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createMockFetch.js","sourceRoot":"","sources":["../../../src/testing/core/createMockFetch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,IAAM,eAAe,GAAG,UACtB,MAAqB,EACrB,aAAyD;IAAzD,8BAAA,EAAA,kBAAyC,QAAQ,EAAE,IAAI,EAAE;IAEzD,IAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;IAE/B,IAAM,SAAS,GAAkD,UAC/D,IAAI,EACJ,OAAO;QAEP,OAAO,IAAI,OAAO,CAAC,UAAO,OAAO;;;;;wBACzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAEjC,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;4BACvB,gBAAgB,GAAqB,EAAE,CAAC;4BAE5C,IAAI,CAAC;gCACH,gBAAgB,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;4BAChD,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACX,gBAAgB,GAAG;oCACjB,IAAI,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC,CAAiB,CAAC,EAAE,CAAC;iCACxD,CAAC;4BACJ,CAAC;4BAED,IAAI,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;gCACjC,sBAAO,OAAO,CACZ,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAC3D,EAAC;4BACJ,CAAC;wBACH,CAAC;wBAEc,qBAAM,OAAO,CAAC;gCAC3B,MAAM,QAAA;gCACN,QAAQ,UAAA;gCACR,cAAc,EAAE,IAAI,CAAC,SAAS;gCAC9B,aAAa,EAAE,IAAI,CAAC,aAAa;6BAClC,CAAC,EAAA;;wBALI,MAAM,GAAG,SAKb;wBAEI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBAEjD,OAAO,CAAC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;;;;aAC1C,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;IAEzB,IAAM,OAAO,GAAG;QACd,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,SAAA,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import { execute, validate } from \"graphql\";\nimport type { GraphQLError, GraphQLSchema } from \"graphql\";\nimport { ApolloError, gql } from \"../../core/index.js\";\nimport { withCleanup } from \"../internal/index.js\";\n\n/**\n * A function that accepts a static `schema` and a `mockFetchOpts` object and\n * returns a disposable object with `mock` and `restore` functions.\n *\n * The `mock` function is a mock fetch function that is set on the global\n * `window` object. This function intercepts any fetch requests and\n * returns a response by executing the operation against the provided schema.\n *\n * The `restore` function is a cleanup function that will restore the previous\n * `fetch`. It is automatically called if the function's return value is\n * declared with `using`. If your environment does not support the language\n * feature `using`, you should manually invoke the `restore` function.\n *\n * @param schema - A `GraphQLSchema`.\n * @param mockFetchOpts - Configuration options.\n * @returns An object with both `mock` and `restore` functions.\n *\n * @example\n * ```js\n * using _fetch = createMockFetch(schema); // automatically restores fetch after exiting the block\n *\n * const { restore } = createMockFetch(schema);\n * restore(); // manually restore fetch if `using` is not supported\n * ```\n * @since 3.10.0\n * @alpha\n */\nconst createMockFetch = (\n schema: GraphQLSchema,\n mockFetchOpts: { validate: boolean } = { validate: true }\n) => {\n const prevFetch = window.fetch;\n\n const mockFetch: (uri: any, options: any) => Promise<Response> = (\n _uri,\n options\n ) => {\n return new Promise(async (resolve) => {\n const body = JSON.parse(options.body);\n const document = gql(body.query);\n\n if (mockFetchOpts.validate) {\n let validationErrors: readonly Error[] = [];\n\n try {\n validationErrors = validate(schema, document);\n } catch (e) {\n validationErrors = [\n new ApolloError({ graphQLErrors: [e as GraphQLError] }),\n ];\n }\n\n if (validationErrors?.length > 0) {\n return resolve(\n new Response(JSON.stringify({ errors: validationErrors }))\n );\n }\n }\n\n const result = await execute({\n schema,\n document,\n variableValues: body.variables,\n operationName: body.operationName,\n });\n\n const stringifiedResult = JSON.stringify(result);\n\n resolve(new Response(stringifiedResult));\n });\n };\n\n window.fetch = mockFetch;\n\n const restore = () => {\n window.fetch = prevFetch;\n };\n\n return withCleanup({ mock: mockFetch, restore }, restore);\n};\n\nexport { createMockFetch };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createProxiedSchema.js","sourceRoot":"","sources":["../../../src/testing/core/createProxiedSchema.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAa7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,IAAM,mBAAmB,GAAG,UAC1B,eAA8B,EAC9B,SAAoB;IAEpB,IAAI,eAAe,gBAAQ,SAAS,CAAE,CAAC;IACvC,IAAI,YAAY,GAAG,oBAAoB,CAAC;QACtC,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IAEH,IAAM,GAAG,GAAqB;QAC5B,GAAG,EAAE,UAAC,EAA2B;gBAAd,YAAY,eAAA;YAC7B,eAAe,yBAAQ,eAAe,GAAK,YAAY,CAAE,CAAC;YAC1D,YAAY,GAAG,oBAAoB,CAAC;gBAClC,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,eAAe;aAC3B,CAAC,CAAC;YAEH,OAAO,YAA6B,CAAC;QACvC,CAAC;QAED,IAAI,EAAE,UAAC,EAAgC;gBAAhC,qBAA8B,EAAE,KAAA,EAAnB,YAAY,eAAA;YAC9B,OAAO,mBAAmB,CAAC,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,eAAe,CAAC,CAAC;QAC5E,CAAC;QAED,KAAK,EAAE;YACL,YAAY,GAAG,oBAAoB,CAAC;gBAClC,MAAM,EAAE,eAAe;gBACvB,SAAS,WAAA;aACV,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE;QACrC,GAAG,YAAC,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,gEAAgE;YAChE,0EAA0E;YAC1E,aAAa;YACb,EAAE;YACF,6CAA6C;YAC7C,EAAE;YACF,eAAe;YACf,WAAW;YACX,iBAAiB;YACjB,MAAM;YACN,WAAW;YACX,UAAU;YACV,MAAM;YACN,IAAI;YACJ,EAAE;YACF,sEAAsE;YACtE,sEAAsE;YACtE,mDAAmD;YACnD,EAAE;YACF,6DAA6D;YAC7D,oEAAoE;YACpE,4CAA4C;YAE5C,IAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,MAAuB,CAAC;AACjC,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import { addResolversToSchema } from \"@graphql-tools/schema\";\nimport type { GraphQLSchema } from \"graphql\";\n\nimport type { Resolvers } from \"../../core/types.js\";\n\ntype ProxiedSchema = GraphQLSchema & ProxiedSchemaFns;\n\ninterface ProxiedSchemaFns {\n add: (addOptions: { resolvers: Resolvers }) => ProxiedSchema;\n fork: (forkOptions?: { resolvers?: Resolvers }) => ProxiedSchema;\n reset: () => void;\n}\n\n/**\n * A function that creates a [Proxy object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)\n * around a given `schema` with `resolvers`. This proxied schema can be used to\n * progressively layer resolvers on top of the original schema using the `add`\n * method. The `fork` method can be used to create a new proxied schema which\n * can be modified independently of the original schema. `reset` will restore\n * resolvers to the original proxied schema.\n *\n * @param schemaWithMocks - A `GraphQLSchema`.\n * @param resolvers - `Resolvers` object.\n * @returns A `ProxiedSchema` with `add`, `fork` and `reset` methods.\n *\n * @example\n * ```js\n * const schemaWithMocks = createMockSchema(schemaWithTypeDefs, {\n ID: () => \"1\",\n Int: () => 36,\n String: () => \"String\",\n Date: () => new Date(\"December 10, 1815 01:00:00\").toJSON().split(\"T\")[0],\n });\n *\n * const schema = createProxiedSchema(schemaWithMocks, {\n Query: {\n writer: () => ({\n name: \"Ada Lovelace\",\n }),\n }\n });\n * ```\n * @since 3.9.0\n * @alpha\n */\nconst createProxiedSchema = (\n schemaWithMocks: GraphQLSchema,\n resolvers: Resolvers\n): ProxiedSchema => {\n let targetResolvers = { ...resolvers };\n let targetSchema = addResolversToSchema({\n schema: schemaWithMocks,\n resolvers: targetResolvers,\n });\n\n const fns: ProxiedSchemaFns = {\n add: ({ resolvers: newResolvers }) => {\n targetResolvers = { ...targetResolvers, ...newResolvers };\n targetSchema = addResolversToSchema({\n schema: targetSchema,\n resolvers: targetResolvers,\n });\n\n return targetSchema as ProxiedSchema;\n },\n\n fork: ({ resolvers: newResolvers } = {}) => {\n return createProxiedSchema(targetSchema, newResolvers ?? targetResolvers);\n },\n\n reset: () => {\n targetSchema = addResolversToSchema({\n schema: schemaWithMocks,\n resolvers,\n });\n },\n };\n\n const schema = new Proxy(targetSchema, {\n get(_target, p) {\n if (p in fns) {\n return Reflect.get(fns, p);\n }\n\n // An optimization that eliminates round-trips through the proxy\n // on class methods invoked via `this` on a base class instance wrapped by\n // the proxy.\n //\n // For example, consider the following class:\n //\n // class Base {\n // foo(){\n // this.bar()\n // }\n // bar(){\n // ...\n // }\n // }\n //\n // Calling `proxy.foo()` would call `foo` with `this` being the proxy.\n // This would result in calling `proxy.bar()` which would again invoke\n // the proxy to resolve `bar` and call that method.\n //\n // Instead, calls to `proxy.foo()` should result in a call to\n // `innerObject.foo()` with a `this` of `innerObject`, and that call\n // should directly call `innerObject.bar()`.\n\n const property = Reflect.get(targetSchema, p);\n if (typeof property === \"function\") {\n return property.bind(targetSchema);\n }\n return property;\n },\n });\n\n return schema as ProxiedSchema;\n};\n\nexport { createProxiedSchema };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|