graphql-jit 0.8.9 → 0.9.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/README.md +25 -0
- package/dist/cjs/ast.d.ts +89 -0
- package/dist/cjs/ast.js +766 -0
- package/dist/cjs/ast.js.map +1 -0
- package/dist/cjs/compat.d.ts +70 -0
- package/dist/cjs/compat.js +144 -0
- package/dist/cjs/compat.js.map +1 -0
- package/dist/cjs/debug.d.ts +29 -0
- package/dist/cjs/debug.js +46 -0
- package/dist/cjs/debug.js.map +1 -0
- package/dist/cjs/error.d.ts +7 -0
- package/dist/cjs/error.js +58 -0
- package/dist/cjs/error.js.map +1 -0
- package/dist/cjs/execution.d.ts +154 -0
- package/dist/cjs/execution.js +1240 -0
- package/dist/cjs/execution.js.map +1 -0
- package/dist/cjs/generate.d.ts +4 -0
- package/dist/cjs/generate.js +13 -0
- package/dist/cjs/generate.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/inspect.d.ts +5 -0
- package/dist/cjs/inspect.js +110 -0
- package/dist/cjs/inspect.js.map +1 -0
- package/dist/cjs/json.d.ts +9 -0
- package/dist/cjs/json.js +144 -0
- package/dist/cjs/json.js.map +1 -0
- package/dist/cjs/memoize.d.ts +5 -0
- package/dist/cjs/memoize.js +28 -0
- package/dist/cjs/memoize.js.map +1 -0
- package/dist/cjs/non-null.d.ts +9 -0
- package/dist/cjs/non-null.js +205 -0
- package/dist/cjs/non-null.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/{resolve-info.d.ts → cjs/resolve-info.d.ts} +10 -12
- package/dist/cjs/resolve-info.js +232 -0
- package/dist/cjs/resolve-info.js.map +1 -0
- package/dist/cjs/runtime.d.ts +14 -0
- package/dist/cjs/runtime.js +92 -0
- package/dist/cjs/runtime.js.map +1 -0
- package/dist/cjs/types.d.ts +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/variables.d.ts +20 -0
- package/dist/cjs/variables.js +357 -0
- package/dist/cjs/variables.js.map +1 -0
- package/dist/esm/ast.d.ts +89 -0
- package/dist/esm/ast.js +751 -0
- package/dist/esm/ast.js.map +1 -0
- package/dist/esm/compat.d.ts +70 -0
- package/dist/esm/compat.js +102 -0
- package/dist/esm/compat.js.map +1 -0
- package/dist/esm/debug.d.ts +29 -0
- package/dist/esm/debug.js +40 -0
- package/dist/esm/debug.js.map +1 -0
- package/dist/esm/error.d.ts +7 -0
- package/dist/esm/error.js +55 -0
- package/dist/esm/error.js.map +1 -0
- package/dist/esm/execution.d.ts +154 -0
- package/dist/esm/execution.js +1227 -0
- package/dist/esm/execution.js.map +1 -0
- package/dist/esm/generate.d.ts +4 -0
- package/dist/esm/generate.js +10 -0
- package/dist/esm/generate.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/inspect.d.ts +5 -0
- package/dist/esm/inspect.js +106 -0
- package/dist/esm/inspect.js.map +1 -0
- package/dist/esm/json.d.ts +9 -0
- package/dist/esm/json.js +141 -0
- package/dist/esm/json.js.map +1 -0
- package/dist/esm/memoize.d.ts +5 -0
- package/dist/esm/memoize.js +20 -0
- package/dist/esm/memoize.js.map +1 -0
- package/dist/esm/non-null.d.ts +9 -0
- package/dist/esm/non-null.js +199 -0
- package/dist/esm/non-null.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/{resolve-info.d.mts → esm/resolve-info.d.ts} +10 -12
- package/dist/esm/resolve-info.js +224 -0
- package/dist/esm/resolve-info.js.map +1 -0
- package/dist/esm/runtime.d.ts +14 -0
- package/dist/esm/runtime.js +89 -0
- package/dist/esm/runtime.js.map +1 -0
- package/dist/esm/types.d.ts +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/variables.d.ts +20 -0
- package/dist/esm/variables.js +350 -0
- package/dist/esm/variables.js.map +1 -0
- package/package.json +39 -35
- package/dist/ast.d.mts +0 -7
- package/dist/ast.d.ts +0 -7
- package/dist/ast.js +0 -635
- package/dist/ast.js.map +0 -1
- package/dist/ast.mjs +0 -612
- package/dist/ast.mjs.map +0 -1
- package/dist/compat.d.mts +0 -7
- package/dist/compat.d.ts +0 -7
- package/dist/compat.js +0 -113
- package/dist/compat.js.map +0 -1
- package/dist/compat.mjs +0 -75
- package/dist/compat.mjs.map +0 -1
- package/dist/error.d.mts +0 -11
- package/dist/error.d.ts +0 -11
- package/dist/error.js +0 -79
- package/dist/error.js.map +0 -1
- package/dist/error.mjs +0 -57
- package/dist/error.mjs.map +0 -1
- package/dist/execution.d.mts +0 -7
- package/dist/execution.d.ts +0 -7
- package/dist/execution.js +0 -1262
- package/dist/execution.js.map +0 -1
- package/dist/execution.mjs +0 -1248
- package/dist/execution.mjs.map +0 -1
- package/dist/generate.d.mts +0 -6
- package/dist/generate.d.ts +0 -6
- package/dist/generate.js +0 -37
- package/dist/generate.js.map +0 -1
- package/dist/generate.mjs +0 -13
- package/dist/generate.mjs.map +0 -1
- package/dist/index-CeluTkd4.d.mts +0 -329
- package/dist/index-mKv2zpdA.d.ts +0 -329
- package/dist/index.d.mts +0 -7
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -36
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -15
- package/dist/index.mjs.map +0 -1
- package/dist/inspect.d.mts +0 -7
- package/dist/inspect.d.ts +0 -7
- package/dist/inspect.js +0 -121
- package/dist/inspect.js.map +0 -1
- package/dist/inspect.mjs +0 -97
- package/dist/inspect.mjs.map +0 -1
- package/dist/json.d.mts +0 -18
- package/dist/json.d.ts +0 -18
- package/dist/json.js +0 -181
- package/dist/json.js.map +0 -1
- package/dist/json.mjs +0 -164
- package/dist/json.mjs.map +0 -1
- package/dist/memoize.d.mts +0 -6
- package/dist/memoize.d.ts +0 -6
- package/dist/memoize.js +0 -67
- package/dist/memoize.js.map +0 -1
- package/dist/memoize.mjs +0 -31
- package/dist/memoize.mjs.map +0 -1
- package/dist/non-null.d.mts +0 -7
- package/dist/non-null.d.ts +0 -7
- package/dist/non-null.js +0 -196
- package/dist/non-null.js.map +0 -1
- package/dist/non-null.mjs +0 -167
- package/dist/non-null.mjs.map +0 -1
- package/dist/resolve-info.js +0 -245
- package/dist/resolve-info.js.map +0 -1
- package/dist/resolve-info.mjs +0 -219
- package/dist/resolve-info.mjs.map +0 -1
- package/dist/runtime.d.mts +0 -7
- package/dist/runtime.d.ts +0 -7
- package/dist/runtime.js +0 -115
- package/dist/runtime.js.map +0 -1
- package/dist/runtime.mjs +0 -91
- package/dist/runtime.mjs.map +0 -1
- package/dist/types.d.mts +0 -3
- package/dist/types.d.ts +0 -3
- package/dist/types.js +0 -17
- package/dist/types.js.map +0 -1
- package/dist/types.mjs +0 -1
- package/dist/types.mjs.map +0 -1
- package/dist/variables.d.mts +0 -17
- package/dist/variables.d.ts +0 -17
- package/dist/variables.js +0 -412
- package/dist/variables.js.map +0 -1
- package/dist/variables.mjs +0 -391
- package/dist/variables.mjs.map +0 -1
package/dist/resolve-info.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolve-info.ts"],"sourcesContent":["import { genFn } from \"./generate\";\nimport {\n doTypesOverlap,\n type FieldNode,\n type GraphQLCompositeType,\n GraphQLError,\n GraphQLInterfaceType,\n type GraphQLNamedType,\n GraphQLObjectType,\n type GraphQLOutputType,\n type GraphQLResolveInfo,\n GraphQLSchema,\n isAbstractType,\n isCompositeType,\n isListType,\n isNonNullType,\n isObjectType,\n isUnionType,\n Kind,\n type SelectionSetNode\n} from \"graphql\";\nimport memoize from \"lodash.memoize\";\nimport mergeWith from \"lodash.mergewith\";\nimport { memoize2, memoize4 } from \"./memoize.js\";\n\n// TODO(boopathi): Use negated types to express\n// Enrichments<T> = { [key in (string & not keyof GraphQLResolveInfo)]: T[key] }\n// in TypeScript 3.5\n// https://github.com/Microsoft/TypeScript/pull/29317\nexport type GraphQLJitResolveInfo<Enrichments> = GraphQLResolveInfo &\n Enrichments;\n\nexport interface ResolveInfoEnricherInput {\n schema: GraphQLResolveInfo[\"schema\"];\n fragments: GraphQLResolveInfo[\"fragments\"];\n operation: GraphQLResolveInfo[\"operation\"];\n parentType: GraphQLObjectType;\n returnType: GraphQLOutputType;\n fieldName: string;\n fieldNodes: FieldNode[];\n}\n\nexport interface FieldExpansion {\n // The possible return types that the field can return\n // It includes all the types in the Schema that intersect with the actual return type\n [returnType: string]: TypeExpansion;\n}\n\nconst LeafFieldSymbol = Symbol(\"LeafFieldSymbol\");\n\nexport interface LeafField {\n [LeafFieldSymbol]: true;\n}\n\nexport interface TypeExpansion {\n // The fields that are requested in the Query for a particular type\n // `true` indicates a leaf node\n [fieldName: string]: FieldExpansion | LeafField;\n}\n\nfunction createLeafField<T extends object>(props: T): T & LeafField {\n return {\n [LeafFieldSymbol]: true,\n ...props\n };\n}\n\nexport function isLeafField(obj: LeafField | FieldExpansion): obj is LeafField {\n return (\n obj != null && Object.prototype.hasOwnProperty.call(obj, LeafFieldSymbol)\n );\n}\n\n/**\n * Compute the GraphQLJitResolveInfo's `fieldExpansion` and return a function\n * that returns the computed resolveInfo. This thunk is registered in\n * context.dependencies for the field's resolveInfoName\n */\nexport function createResolveInfoThunk<T>(\n {\n schema,\n fragments,\n operation,\n parentType,\n fieldName,\n fieldType,\n fieldNodes\n }: {\n schema: GraphQLResolveInfo[\"schema\"];\n fragments: GraphQLResolveInfo[\"fragments\"];\n operation: GraphQLResolveInfo[\"operation\"];\n parentType: GraphQLObjectType;\n fieldType: GraphQLOutputType;\n fieldName: string;\n fieldNodes: FieldNode[];\n },\n enricher?: (inp: ResolveInfoEnricherInput) => T\n) {\n let enrichedInfo = {};\n if (typeof enricher === \"function\") {\n enrichedInfo =\n enricher({\n fieldName,\n fieldNodes,\n returnType: fieldType,\n parentType,\n schema,\n fragments,\n operation\n }) || {};\n if (typeof enrichedInfo !== \"object\" || Array.isArray(enrichedInfo)) {\n enrichedInfo = {};\n }\n }\n const gen = genFn();\n gen(`return function getGraphQLResolveInfo(rootValue, variableValues, path) {\n return {\n fieldName,\n fieldNodes,\n returnType: fieldType,\n parentType,\n path,\n schema,\n fragments,\n rootValue,\n operation,\n variableValues,`);\n Object.keys(enrichedInfo).forEach((key) => {\n gen(`${key}: enrichedInfo[\"${key}\"],\\n`);\n });\n gen(`};};`);\n // eslint-disable-next-line\n return new Function(\n \"fieldName\",\n \"fieldNodes\",\n \"fieldType\",\n \"parentType\",\n \"schema\",\n \"fragments\",\n \"operation\",\n \"enrichedInfo\",\n gen.toString()\n ).call(\n null,\n fieldName,\n fieldNodes,\n fieldType,\n parentType,\n schema,\n fragments,\n operation,\n enrichedInfo\n );\n}\n\nexport function fieldExpansionEnricher(input: ResolveInfoEnricherInput) {\n const { schema, fragments, returnType, fieldNodes } = input;\n const fieldExpansion: FieldExpansion | LeafField = {};\n\n for (const fieldNode of fieldNodes) {\n deepMerge(\n fieldExpansion,\n memoizedExpandFieldNode(schema, fragments, fieldNode, returnType)\n );\n }\n\n return {\n fieldExpansion\n };\n}\n\ntype FragmentsType = GraphQLResolveInfo[\"fragments\"];\ntype GraphQLNamedOutputType = GraphQLNamedType & GraphQLOutputType;\ntype GraphQLObjectLike = GraphQLInterfaceType | GraphQLObjectType;\n\nconst MEMOIZATION = true;\n\nconst memoizedGetReturnType = MEMOIZATION\n ? memoize2(getReturnType)\n : getReturnType;\nconst memoizedHasField = MEMOIZATION ? memoize2(hasField) : hasField;\nconst memoizedResolveEndType = MEMOIZATION\n ? memoize(resolveEndType)\n : resolveEndType;\nconst memoizedGetPossibleTypes = MEMOIZATION\n ? memoize2(getPossibleTypes)\n : getPossibleTypes;\nconst memoizedExpandFieldNodeType = MEMOIZATION\n ? memoize4(expandFieldNodeType)\n : expandFieldNodeType;\nconst memoizedExpandFieldNode = MEMOIZATION\n ? memoize4(expandFieldNode)\n : expandFieldNode;\n\nfunction expandFieldNode(\n schema: GraphQLSchema,\n fragments: FragmentsType,\n node: FieldNode,\n fieldType: GraphQLOutputType\n): FieldExpansion | LeafField {\n if (node.selectionSet == null) {\n return createLeafField({});\n }\n\n // there is a selectionSet which makes the fieldType a CompositeType\n const typ = memoizedResolveEndType(fieldType) as GraphQLCompositeType;\n const possibleTypes = memoizedGetPossibleTypes(schema, typ);\n\n const fieldExpansion: FieldExpansion = {};\n for (const possibleType of possibleTypes) {\n if (!isUnionType(possibleType)) {\n fieldExpansion[possibleType.name] = memoizedExpandFieldNodeType(\n schema,\n fragments,\n possibleType,\n node.selectionSet\n );\n }\n }\n\n return fieldExpansion;\n}\n\nfunction expandFieldNodeType(\n schema: GraphQLSchema,\n fragments: FragmentsType,\n parentType: GraphQLCompositeType,\n selectionSet: SelectionSetNode\n): TypeExpansion {\n const typeExpansion: TypeExpansion = {};\n\n for (const selection of selectionSet.selections) {\n if (selection.kind === Kind.FIELD) {\n if (\n !isUnionType(parentType) &&\n memoizedHasField(parentType, selection.name.value)\n ) {\n typeExpansion[selection.name.value] = memoizedExpandFieldNode(\n schema,\n fragments,\n selection,\n memoizedGetReturnType(parentType, selection.name.value)\n );\n }\n } else {\n const selectionSet =\n selection.kind === Kind.INLINE_FRAGMENT\n ? selection.selectionSet\n : fragments[selection.name.value].selectionSet;\n\n const nextType =\n selection.kind === Kind.INLINE_FRAGMENT\n ? selection.typeCondition\n ? (schema.getType(\n selection.typeCondition.name.value\n ) as GraphQLCompositeType)\n : parentType\n : (schema.getType(\n fragments[selection.name.value].typeCondition.name.value\n ) as GraphQLCompositeType);\n\n /**\n * nextType (comes from query) is the type extracted from the fragment\n * parentType (comes from schema) is the possibleType for which we are filling fields\n *\n * if the type from query (nextType) is the same as the type we are filling (parentType)\n * or\n * if the type from query (nextType) is an abstract type - this case is when we jump\n * to a super type or sub type. Here we maintain the context (parentType) for which\n * we are filling the fields. The super type / sub type will be filled in its own\n * pass.\n */\n if (nextType === parentType || isAbstractType(nextType)) {\n deepMerge(\n typeExpansion,\n memoizedExpandFieldNodeType(\n schema,\n fragments,\n parentType,\n selectionSet\n )\n );\n }\n }\n }\n\n return typeExpansion;\n}\n\n/**\n * Returns a list of Possible types that one can get to from the\n * resolvedType. As an analogy, these are the same types that one\n * can use in a fragment's typeCondition.\n *\n * Note: This is different from schema.getPossibleTypes() that this\n * returns all possible types and not just the ones from the type definition.\n *\n * Example:\n * interface Node {\n * id: ID!\n * }\n * type User implements Node {\n * id: ID!\n * name: String\n * }\n * type Article implements Node {\n * id: ID!\n * title: String\n * }\n * union Card = User | Article\n *\n * - schema.getPossibleTypes(Card) would give [User, Article]\n * - This function getPossibleTypes(schema, Card) would give [User, Article, Node]\n *\n */\nfunction getPossibleTypes(\n schema: GraphQLSchema,\n compositeType: GraphQLCompositeType\n) {\n if (isObjectType(compositeType)) {\n return [compositeType];\n }\n\n const possibleTypes: GraphQLCompositeType[] = [];\n const types = schema.getTypeMap();\n for (const typeName in types) {\n if (Object.prototype.hasOwnProperty.call(types, typeName)) {\n const typ = types[typeName];\n if (isCompositeType(typ) && doTypesOverlap(schema, typ, compositeType)) {\n possibleTypes.push(typ);\n }\n }\n }\n\n return possibleTypes;\n}\n\n/**\n * Given an (Object|Interface)Type, and a fieldName, find the\n * appropriate `end` return type for the field in the Composite Type.\n *\n * Note: The `end` return type is the type by unwrapping non-null types\n * and list types. Check `resolveEndType`\n */\nfunction getReturnType(\n parentType: GraphQLObjectLike,\n fieldName: string\n): GraphQLNamedOutputType {\n const fields = parentType.getFields();\n if (!Object.prototype.hasOwnProperty.call(fields, fieldName)) {\n throw new GraphQLError(\n `Field \"${fieldName}\" does not exist in \"${parentType.name}\"`\n );\n }\n\n const outputType = fields[fieldName].type;\n return memoizedResolveEndType(outputType);\n}\n\n/**\n * Resolve to the end type of the Output type unwrapping non-null types and lists\n */\nfunction resolveEndType(typ: GraphQLOutputType): GraphQLNamedOutputType {\n if (isListType(typ) || isNonNullType(typ)) {\n return memoizedResolveEndType(typ.ofType);\n }\n return typ;\n}\n\nfunction hasField(typ: GraphQLObjectLike, fieldName: string) {\n return Object.prototype.hasOwnProperty.call(typ.getFields(), fieldName);\n}\n\n// This is because lodash does not support merging keys\n// which are symbols. We require them for leaf fields\nfunction deepMerge<TObject, TSource>(obj: TObject, src: TSource) {\n mergeWith(obj, src, (objValue, srcValue): LeafField | undefined => {\n if (isLeafField(objValue)) {\n if (isLeafField(srcValue)) {\n return {\n ...objValue,\n ...srcValue\n };\n }\n\n return objValue;\n } else if (isLeafField(srcValue)) {\n return srcValue;\n }\n\n return undefined;\n });\n}\n"],"mappings":"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","names":["import_lodash","memoize","selectionSet","mergeWith"]}
|
package/dist/resolve-info.mjs
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { genFn } from "./generate";
|
|
2
|
-
import {
|
|
3
|
-
doTypesOverlap,
|
|
4
|
-
GraphQLError,
|
|
5
|
-
isAbstractType,
|
|
6
|
-
isCompositeType,
|
|
7
|
-
isListType,
|
|
8
|
-
isNonNullType,
|
|
9
|
-
isObjectType,
|
|
10
|
-
isUnionType,
|
|
11
|
-
Kind
|
|
12
|
-
} from "graphql";
|
|
13
|
-
import memoize from "lodash.memoize";
|
|
14
|
-
import mergeWith from "lodash.mergewith";
|
|
15
|
-
import { memoize2, memoize4 } from "./memoize.js";
|
|
16
|
-
const LeafFieldSymbol = Symbol("LeafFieldSymbol");
|
|
17
|
-
function createLeafField(props) {
|
|
18
|
-
return {
|
|
19
|
-
[LeafFieldSymbol]: true,
|
|
20
|
-
...props
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
function isLeafField(obj) {
|
|
24
|
-
return obj != null && Object.prototype.hasOwnProperty.call(obj, LeafFieldSymbol);
|
|
25
|
-
}
|
|
26
|
-
function createResolveInfoThunk({
|
|
27
|
-
schema,
|
|
28
|
-
fragments,
|
|
29
|
-
operation,
|
|
30
|
-
parentType,
|
|
31
|
-
fieldName,
|
|
32
|
-
fieldType,
|
|
33
|
-
fieldNodes
|
|
34
|
-
}, enricher) {
|
|
35
|
-
let enrichedInfo = {};
|
|
36
|
-
if (typeof enricher === "function") {
|
|
37
|
-
enrichedInfo = enricher({
|
|
38
|
-
fieldName,
|
|
39
|
-
fieldNodes,
|
|
40
|
-
returnType: fieldType,
|
|
41
|
-
parentType,
|
|
42
|
-
schema,
|
|
43
|
-
fragments,
|
|
44
|
-
operation
|
|
45
|
-
}) || {};
|
|
46
|
-
if (typeof enrichedInfo !== "object" || Array.isArray(enrichedInfo)) {
|
|
47
|
-
enrichedInfo = {};
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const gen = genFn();
|
|
51
|
-
gen(`return function getGraphQLResolveInfo(rootValue, variableValues, path) {
|
|
52
|
-
return {
|
|
53
|
-
fieldName,
|
|
54
|
-
fieldNodes,
|
|
55
|
-
returnType: fieldType,
|
|
56
|
-
parentType,
|
|
57
|
-
path,
|
|
58
|
-
schema,
|
|
59
|
-
fragments,
|
|
60
|
-
rootValue,
|
|
61
|
-
operation,
|
|
62
|
-
variableValues,`);
|
|
63
|
-
Object.keys(enrichedInfo).forEach((key) => {
|
|
64
|
-
gen(`${key}: enrichedInfo["${key}"],
|
|
65
|
-
`);
|
|
66
|
-
});
|
|
67
|
-
gen(`};};`);
|
|
68
|
-
return new Function(
|
|
69
|
-
"fieldName",
|
|
70
|
-
"fieldNodes",
|
|
71
|
-
"fieldType",
|
|
72
|
-
"parentType",
|
|
73
|
-
"schema",
|
|
74
|
-
"fragments",
|
|
75
|
-
"operation",
|
|
76
|
-
"enrichedInfo",
|
|
77
|
-
gen.toString()
|
|
78
|
-
).call(
|
|
79
|
-
null,
|
|
80
|
-
fieldName,
|
|
81
|
-
fieldNodes,
|
|
82
|
-
fieldType,
|
|
83
|
-
parentType,
|
|
84
|
-
schema,
|
|
85
|
-
fragments,
|
|
86
|
-
operation,
|
|
87
|
-
enrichedInfo
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
function fieldExpansionEnricher(input) {
|
|
91
|
-
const { schema, fragments, returnType, fieldNodes } = input;
|
|
92
|
-
const fieldExpansion = {};
|
|
93
|
-
for (const fieldNode of fieldNodes) {
|
|
94
|
-
deepMerge(
|
|
95
|
-
fieldExpansion,
|
|
96
|
-
memoizedExpandFieldNode(schema, fragments, fieldNode, returnType)
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
fieldExpansion
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
const MEMOIZATION = true;
|
|
104
|
-
const memoizedGetReturnType = MEMOIZATION ? memoize2(getReturnType) : getReturnType;
|
|
105
|
-
const memoizedHasField = MEMOIZATION ? memoize2(hasField) : hasField;
|
|
106
|
-
const memoizedResolveEndType = MEMOIZATION ? memoize(resolveEndType) : resolveEndType;
|
|
107
|
-
const memoizedGetPossibleTypes = MEMOIZATION ? memoize2(getPossibleTypes) : getPossibleTypes;
|
|
108
|
-
const memoizedExpandFieldNodeType = MEMOIZATION ? memoize4(expandFieldNodeType) : expandFieldNodeType;
|
|
109
|
-
const memoizedExpandFieldNode = MEMOIZATION ? memoize4(expandFieldNode) : expandFieldNode;
|
|
110
|
-
function expandFieldNode(schema, fragments, node, fieldType) {
|
|
111
|
-
if (node.selectionSet == null) {
|
|
112
|
-
return createLeafField({});
|
|
113
|
-
}
|
|
114
|
-
const typ = memoizedResolveEndType(fieldType);
|
|
115
|
-
const possibleTypes = memoizedGetPossibleTypes(schema, typ);
|
|
116
|
-
const fieldExpansion = {};
|
|
117
|
-
for (const possibleType of possibleTypes) {
|
|
118
|
-
if (!isUnionType(possibleType)) {
|
|
119
|
-
fieldExpansion[possibleType.name] = memoizedExpandFieldNodeType(
|
|
120
|
-
schema,
|
|
121
|
-
fragments,
|
|
122
|
-
possibleType,
|
|
123
|
-
node.selectionSet
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return fieldExpansion;
|
|
128
|
-
}
|
|
129
|
-
function expandFieldNodeType(schema, fragments, parentType, selectionSet) {
|
|
130
|
-
const typeExpansion = {};
|
|
131
|
-
for (const selection of selectionSet.selections) {
|
|
132
|
-
if (selection.kind === Kind.FIELD) {
|
|
133
|
-
if (!isUnionType(parentType) && memoizedHasField(parentType, selection.name.value)) {
|
|
134
|
-
typeExpansion[selection.name.value] = memoizedExpandFieldNode(
|
|
135
|
-
schema,
|
|
136
|
-
fragments,
|
|
137
|
-
selection,
|
|
138
|
-
memoizedGetReturnType(parentType, selection.name.value)
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
} else {
|
|
142
|
-
const selectionSet2 = selection.kind === Kind.INLINE_FRAGMENT ? selection.selectionSet : fragments[selection.name.value].selectionSet;
|
|
143
|
-
const nextType = selection.kind === Kind.INLINE_FRAGMENT ? selection.typeCondition ? schema.getType(
|
|
144
|
-
selection.typeCondition.name.value
|
|
145
|
-
) : parentType : schema.getType(
|
|
146
|
-
fragments[selection.name.value].typeCondition.name.value
|
|
147
|
-
);
|
|
148
|
-
if (nextType === parentType || isAbstractType(nextType)) {
|
|
149
|
-
deepMerge(
|
|
150
|
-
typeExpansion,
|
|
151
|
-
memoizedExpandFieldNodeType(
|
|
152
|
-
schema,
|
|
153
|
-
fragments,
|
|
154
|
-
parentType,
|
|
155
|
-
selectionSet2
|
|
156
|
-
)
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return typeExpansion;
|
|
162
|
-
}
|
|
163
|
-
function getPossibleTypes(schema, compositeType) {
|
|
164
|
-
if (isObjectType(compositeType)) {
|
|
165
|
-
return [compositeType];
|
|
166
|
-
}
|
|
167
|
-
const possibleTypes = [];
|
|
168
|
-
const types = schema.getTypeMap();
|
|
169
|
-
for (const typeName in types) {
|
|
170
|
-
if (Object.prototype.hasOwnProperty.call(types, typeName)) {
|
|
171
|
-
const typ = types[typeName];
|
|
172
|
-
if (isCompositeType(typ) && doTypesOverlap(schema, typ, compositeType)) {
|
|
173
|
-
possibleTypes.push(typ);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return possibleTypes;
|
|
178
|
-
}
|
|
179
|
-
function getReturnType(parentType, fieldName) {
|
|
180
|
-
const fields = parentType.getFields();
|
|
181
|
-
if (!Object.prototype.hasOwnProperty.call(fields, fieldName)) {
|
|
182
|
-
throw new GraphQLError(
|
|
183
|
-
`Field "${fieldName}" does not exist in "${parentType.name}"`
|
|
184
|
-
);
|
|
185
|
-
}
|
|
186
|
-
const outputType = fields[fieldName].type;
|
|
187
|
-
return memoizedResolveEndType(outputType);
|
|
188
|
-
}
|
|
189
|
-
function resolveEndType(typ) {
|
|
190
|
-
if (isListType(typ) || isNonNullType(typ)) {
|
|
191
|
-
return memoizedResolveEndType(typ.ofType);
|
|
192
|
-
}
|
|
193
|
-
return typ;
|
|
194
|
-
}
|
|
195
|
-
function hasField(typ, fieldName) {
|
|
196
|
-
return Object.prototype.hasOwnProperty.call(typ.getFields(), fieldName);
|
|
197
|
-
}
|
|
198
|
-
function deepMerge(obj, src) {
|
|
199
|
-
mergeWith(obj, src, (objValue, srcValue) => {
|
|
200
|
-
if (isLeafField(objValue)) {
|
|
201
|
-
if (isLeafField(srcValue)) {
|
|
202
|
-
return {
|
|
203
|
-
...objValue,
|
|
204
|
-
...srcValue
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
return objValue;
|
|
208
|
-
} else if (isLeafField(srcValue)) {
|
|
209
|
-
return srcValue;
|
|
210
|
-
}
|
|
211
|
-
return void 0;
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
export {
|
|
215
|
-
createResolveInfoThunk,
|
|
216
|
-
fieldExpansionEnricher,
|
|
217
|
-
isLeafField
|
|
218
|
-
};
|
|
219
|
-
//# sourceMappingURL=resolve-info.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resolve-info.ts"],"sourcesContent":["import { genFn } from \"./generate\";\nimport {\n doTypesOverlap,\n type FieldNode,\n type GraphQLCompositeType,\n GraphQLError,\n GraphQLInterfaceType,\n type GraphQLNamedType,\n GraphQLObjectType,\n type GraphQLOutputType,\n type GraphQLResolveInfo,\n GraphQLSchema,\n isAbstractType,\n isCompositeType,\n isListType,\n isNonNullType,\n isObjectType,\n isUnionType,\n Kind,\n type SelectionSetNode\n} from \"graphql\";\nimport memoize from \"lodash.memoize\";\nimport mergeWith from \"lodash.mergewith\";\nimport { memoize2, memoize4 } from \"./memoize.js\";\n\n// TODO(boopathi): Use negated types to express\n// Enrichments<T> = { [key in (string & not keyof GraphQLResolveInfo)]: T[key] }\n// in TypeScript 3.5\n// https://github.com/Microsoft/TypeScript/pull/29317\nexport type GraphQLJitResolveInfo<Enrichments> = GraphQLResolveInfo &\n Enrichments;\n\nexport interface ResolveInfoEnricherInput {\n schema: GraphQLResolveInfo[\"schema\"];\n fragments: GraphQLResolveInfo[\"fragments\"];\n operation: GraphQLResolveInfo[\"operation\"];\n parentType: GraphQLObjectType;\n returnType: GraphQLOutputType;\n fieldName: string;\n fieldNodes: FieldNode[];\n}\n\nexport interface FieldExpansion {\n // The possible return types that the field can return\n // It includes all the types in the Schema that intersect with the actual return type\n [returnType: string]: TypeExpansion;\n}\n\nconst LeafFieldSymbol = Symbol(\"LeafFieldSymbol\");\n\nexport interface LeafField {\n [LeafFieldSymbol]: true;\n}\n\nexport interface TypeExpansion {\n // The fields that are requested in the Query for a particular type\n // `true` indicates a leaf node\n [fieldName: string]: FieldExpansion | LeafField;\n}\n\nfunction createLeafField<T extends object>(props: T): T & LeafField {\n return {\n [LeafFieldSymbol]: true,\n ...props\n };\n}\n\nexport function isLeafField(obj: LeafField | FieldExpansion): obj is LeafField {\n return (\n obj != null && Object.prototype.hasOwnProperty.call(obj, LeafFieldSymbol)\n );\n}\n\n/**\n * Compute the GraphQLJitResolveInfo's `fieldExpansion` and return a function\n * that returns the computed resolveInfo. This thunk is registered in\n * context.dependencies for the field's resolveInfoName\n */\nexport function createResolveInfoThunk<T>(\n {\n schema,\n fragments,\n operation,\n parentType,\n fieldName,\n fieldType,\n fieldNodes\n }: {\n schema: GraphQLResolveInfo[\"schema\"];\n fragments: GraphQLResolveInfo[\"fragments\"];\n operation: GraphQLResolveInfo[\"operation\"];\n parentType: GraphQLObjectType;\n fieldType: GraphQLOutputType;\n fieldName: string;\n fieldNodes: FieldNode[];\n },\n enricher?: (inp: ResolveInfoEnricherInput) => T\n) {\n let enrichedInfo = {};\n if (typeof enricher === \"function\") {\n enrichedInfo =\n enricher({\n fieldName,\n fieldNodes,\n returnType: fieldType,\n parentType,\n schema,\n fragments,\n operation\n }) || {};\n if (typeof enrichedInfo !== \"object\" || Array.isArray(enrichedInfo)) {\n enrichedInfo = {};\n }\n }\n const gen = genFn();\n gen(`return function getGraphQLResolveInfo(rootValue, variableValues, path) {\n return {\n fieldName,\n fieldNodes,\n returnType: fieldType,\n parentType,\n path,\n schema,\n fragments,\n rootValue,\n operation,\n variableValues,`);\n Object.keys(enrichedInfo).forEach((key) => {\n gen(`${key}: enrichedInfo[\"${key}\"],\\n`);\n });\n gen(`};};`);\n // eslint-disable-next-line\n return new Function(\n \"fieldName\",\n \"fieldNodes\",\n \"fieldType\",\n \"parentType\",\n \"schema\",\n \"fragments\",\n \"operation\",\n \"enrichedInfo\",\n gen.toString()\n ).call(\n null,\n fieldName,\n fieldNodes,\n fieldType,\n parentType,\n schema,\n fragments,\n operation,\n enrichedInfo\n );\n}\n\nexport function fieldExpansionEnricher(input: ResolveInfoEnricherInput) {\n const { schema, fragments, returnType, fieldNodes } = input;\n const fieldExpansion: FieldExpansion | LeafField = {};\n\n for (const fieldNode of fieldNodes) {\n deepMerge(\n fieldExpansion,\n memoizedExpandFieldNode(schema, fragments, fieldNode, returnType)\n );\n }\n\n return {\n fieldExpansion\n };\n}\n\ntype FragmentsType = GraphQLResolveInfo[\"fragments\"];\ntype GraphQLNamedOutputType = GraphQLNamedType & GraphQLOutputType;\ntype GraphQLObjectLike = GraphQLInterfaceType | GraphQLObjectType;\n\nconst MEMOIZATION = true;\n\nconst memoizedGetReturnType = MEMOIZATION\n ? memoize2(getReturnType)\n : getReturnType;\nconst memoizedHasField = MEMOIZATION ? memoize2(hasField) : hasField;\nconst memoizedResolveEndType = MEMOIZATION\n ? memoize(resolveEndType)\n : resolveEndType;\nconst memoizedGetPossibleTypes = MEMOIZATION\n ? memoize2(getPossibleTypes)\n : getPossibleTypes;\nconst memoizedExpandFieldNodeType = MEMOIZATION\n ? memoize4(expandFieldNodeType)\n : expandFieldNodeType;\nconst memoizedExpandFieldNode = MEMOIZATION\n ? memoize4(expandFieldNode)\n : expandFieldNode;\n\nfunction expandFieldNode(\n schema: GraphQLSchema,\n fragments: FragmentsType,\n node: FieldNode,\n fieldType: GraphQLOutputType\n): FieldExpansion | LeafField {\n if (node.selectionSet == null) {\n return createLeafField({});\n }\n\n // there is a selectionSet which makes the fieldType a CompositeType\n const typ = memoizedResolveEndType(fieldType) as GraphQLCompositeType;\n const possibleTypes = memoizedGetPossibleTypes(schema, typ);\n\n const fieldExpansion: FieldExpansion = {};\n for (const possibleType of possibleTypes) {\n if (!isUnionType(possibleType)) {\n fieldExpansion[possibleType.name] = memoizedExpandFieldNodeType(\n schema,\n fragments,\n possibleType,\n node.selectionSet\n );\n }\n }\n\n return fieldExpansion;\n}\n\nfunction expandFieldNodeType(\n schema: GraphQLSchema,\n fragments: FragmentsType,\n parentType: GraphQLCompositeType,\n selectionSet: SelectionSetNode\n): TypeExpansion {\n const typeExpansion: TypeExpansion = {};\n\n for (const selection of selectionSet.selections) {\n if (selection.kind === Kind.FIELD) {\n if (\n !isUnionType(parentType) &&\n memoizedHasField(parentType, selection.name.value)\n ) {\n typeExpansion[selection.name.value] = memoizedExpandFieldNode(\n schema,\n fragments,\n selection,\n memoizedGetReturnType(parentType, selection.name.value)\n );\n }\n } else {\n const selectionSet =\n selection.kind === Kind.INLINE_FRAGMENT\n ? selection.selectionSet\n : fragments[selection.name.value].selectionSet;\n\n const nextType =\n selection.kind === Kind.INLINE_FRAGMENT\n ? selection.typeCondition\n ? (schema.getType(\n selection.typeCondition.name.value\n ) as GraphQLCompositeType)\n : parentType\n : (schema.getType(\n fragments[selection.name.value].typeCondition.name.value\n ) as GraphQLCompositeType);\n\n /**\n * nextType (comes from query) is the type extracted from the fragment\n * parentType (comes from schema) is the possibleType for which we are filling fields\n *\n * if the type from query (nextType) is the same as the type we are filling (parentType)\n * or\n * if the type from query (nextType) is an abstract type - this case is when we jump\n * to a super type or sub type. Here we maintain the context (parentType) for which\n * we are filling the fields. The super type / sub type will be filled in its own\n * pass.\n */\n if (nextType === parentType || isAbstractType(nextType)) {\n deepMerge(\n typeExpansion,\n memoizedExpandFieldNodeType(\n schema,\n fragments,\n parentType,\n selectionSet\n )\n );\n }\n }\n }\n\n return typeExpansion;\n}\n\n/**\n * Returns a list of Possible types that one can get to from the\n * resolvedType. As an analogy, these are the same types that one\n * can use in a fragment's typeCondition.\n *\n * Note: This is different from schema.getPossibleTypes() that this\n * returns all possible types and not just the ones from the type definition.\n *\n * Example:\n * interface Node {\n * id: ID!\n * }\n * type User implements Node {\n * id: ID!\n * name: String\n * }\n * type Article implements Node {\n * id: ID!\n * title: String\n * }\n * union Card = User | Article\n *\n * - schema.getPossibleTypes(Card) would give [User, Article]\n * - This function getPossibleTypes(schema, Card) would give [User, Article, Node]\n *\n */\nfunction getPossibleTypes(\n schema: GraphQLSchema,\n compositeType: GraphQLCompositeType\n) {\n if (isObjectType(compositeType)) {\n return [compositeType];\n }\n\n const possibleTypes: GraphQLCompositeType[] = [];\n const types = schema.getTypeMap();\n for (const typeName in types) {\n if (Object.prototype.hasOwnProperty.call(types, typeName)) {\n const typ = types[typeName];\n if (isCompositeType(typ) && doTypesOverlap(schema, typ, compositeType)) {\n possibleTypes.push(typ);\n }\n }\n }\n\n return possibleTypes;\n}\n\n/**\n * Given an (Object|Interface)Type, and a fieldName, find the\n * appropriate `end` return type for the field in the Composite Type.\n *\n * Note: The `end` return type is the type by unwrapping non-null types\n * and list types. Check `resolveEndType`\n */\nfunction getReturnType(\n parentType: GraphQLObjectLike,\n fieldName: string\n): GraphQLNamedOutputType {\n const fields = parentType.getFields();\n if (!Object.prototype.hasOwnProperty.call(fields, fieldName)) {\n throw new GraphQLError(\n `Field \"${fieldName}\" does not exist in \"${parentType.name}\"`\n );\n }\n\n const outputType = fields[fieldName].type;\n return memoizedResolveEndType(outputType);\n}\n\n/**\n * Resolve to the end type of the Output type unwrapping non-null types and lists\n */\nfunction resolveEndType(typ: GraphQLOutputType): GraphQLNamedOutputType {\n if (isListType(typ) || isNonNullType(typ)) {\n return memoizedResolveEndType(typ.ofType);\n }\n return typ;\n}\n\nfunction hasField(typ: GraphQLObjectLike, fieldName: string) {\n return Object.prototype.hasOwnProperty.call(typ.getFields(), fieldName);\n}\n\n// This is because lodash does not support merging keys\n// which are symbols. We require them for leaf fields\nfunction deepMerge<TObject, TSource>(obj: TObject, src: TSource) {\n mergeWith(obj, src, (objValue, srcValue): LeafField | undefined => {\n if (isLeafField(objValue)) {\n if (isLeafField(srcValue)) {\n return {\n ...objValue,\n ...srcValue\n };\n }\n\n return objValue;\n } else if (isLeafField(srcValue)) {\n return srcValue;\n }\n\n return undefined;\n });\n}\n"],"mappings":"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","names":["selectionSet"]}
|
package/dist/runtime.d.mts
DELETED
package/dist/runtime.d.ts
DELETED
package/dist/runtime.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var runtime_exports = {};
|
|
20
|
-
__export(runtime_exports, {
|
|
21
|
-
jitRuntime: () => jitRuntime
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(runtime_exports);
|
|
24
|
-
function resolvePromise(ctx, promise, onSuccess, onError) {
|
|
25
|
-
++ctx.promiseCounter;
|
|
26
|
-
promise.then(
|
|
27
|
-
(result) => {
|
|
28
|
-
onSuccess(result);
|
|
29
|
-
--ctx.promiseCounter;
|
|
30
|
-
if (ctx.promiseCounter === 0) ctx.resolve(ctx);
|
|
31
|
-
},
|
|
32
|
-
(err) => {
|
|
33
|
-
onError(err);
|
|
34
|
-
--ctx.promiseCounter;
|
|
35
|
-
if (ctx.promiseCounter === 0) ctx.resolve(ctx);
|
|
36
|
-
}
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
const jitRuntime = {
|
|
40
|
-
isPromise(value) {
|
|
41
|
-
return value != null && typeof value === "object" && typeof value.then === "function";
|
|
42
|
-
},
|
|
43
|
-
checkNonNullLeaf(ctx, value, dest, nullMsg, locs, path, capStack, serialize, errHandler, ...parentIndexes) {
|
|
44
|
-
const GQLError = ctx.GraphQLError;
|
|
45
|
-
if (value == null) {
|
|
46
|
-
dest.push(new GQLError(nullMsg, locs, path, void 0, capStack));
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
if (value instanceof Error) {
|
|
50
|
-
dest.push(
|
|
51
|
-
new GQLError(value.message ?? value, locs, path, value, capStack)
|
|
52
|
-
);
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
return serialize(ctx, value, errHandler, ...parentIndexes);
|
|
56
|
-
},
|
|
57
|
-
checkNullableLeaf(ctx, value, dest, locs, path, capStack, serialize, errHandler, ...parentIndexes) {
|
|
58
|
-
if (value == null) return null;
|
|
59
|
-
const GQLError = ctx.GraphQLError;
|
|
60
|
-
if (value instanceof Error) {
|
|
61
|
-
dest.push(
|
|
62
|
-
new GQLError(value.message ?? value, locs, path, value, capStack)
|
|
63
|
-
);
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
return serialize(ctx, value, errHandler, ...parentIndexes);
|
|
67
|
-
},
|
|
68
|
-
callResolver(ctx, call, onSuccess, onError) {
|
|
69
|
-
let value;
|
|
70
|
-
try {
|
|
71
|
-
value = call();
|
|
72
|
-
} catch (err) {
|
|
73
|
-
onError(err);
|
|
74
|
-
onSuccess(null);
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.handleResolverResult(ctx, value, onSuccess, onError);
|
|
78
|
-
},
|
|
79
|
-
handleResolverResult(ctx, value, onSuccess, onError) {
|
|
80
|
-
if (this.isPromise(value)) {
|
|
81
|
-
resolvePromise(ctx, value, onSuccess, onError);
|
|
82
|
-
} else {
|
|
83
|
-
onSuccess(value);
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
handleListItemResult(ctx, item, onSuccess, onError) {
|
|
87
|
-
if (this.isPromise(item)) {
|
|
88
|
-
resolvePromise(ctx, item, onSuccess, onError);
|
|
89
|
-
} else {
|
|
90
|
-
onSuccess(item);
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
finalizeResult(ctx) {
|
|
94
|
-
if (ctx.promiseCounter > 0) {
|
|
95
|
-
return new Promise((resolve) => {
|
|
96
|
-
ctx.resolve = resolve;
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
return void 0;
|
|
100
|
-
},
|
|
101
|
-
safeMap(ctx, iterable, cb, ...idx) {
|
|
102
|
-
let index = 0;
|
|
103
|
-
const result = [];
|
|
104
|
-
for (const a of iterable) {
|
|
105
|
-
cb(ctx, a, index, result, ...idx);
|
|
106
|
-
++index;
|
|
107
|
-
}
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
112
|
-
0 && (module.exports = {
|
|
113
|
-
jitRuntime
|
|
114
|
-
});
|
|
115
|
-
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime.ts"],"sourcesContent":["import { type ExecutionContext } from \"./execution\";\n\ntype Serializer = (\n c: ExecutionContext,\n v: any,\n onError: any,\n ...idx: number[]\n) => any;\n\nfunction resolvePromise(\n ctx: ExecutionContext,\n promise: Promise<unknown>,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n): void {\n ++ctx.promiseCounter;\n promise.then(\n (result) => {\n onSuccess(result);\n --ctx.promiseCounter;\n if (ctx.promiseCounter === 0) ctx.resolve!(ctx);\n },\n (err) => {\n onError(err);\n --ctx.promiseCounter;\n if (ctx.promiseCounter === 0) ctx.resolve!(ctx);\n }\n );\n}\n\nexport const jitRuntime = {\n isPromise(value: unknown): boolean {\n return (\n value != null &&\n typeof value === \"object\" &&\n typeof (value as any).then === \"function\"\n );\n },\n\n checkNonNullLeaf(\n ctx: ExecutionContext,\n value: unknown,\n dest: any[],\n nullMsg: string,\n locs: any,\n path: any,\n capStack: boolean,\n serialize: Serializer,\n errHandler: any,\n ...parentIndexes: number[]\n ): any {\n const GQLError = ctx.GraphQLError as any;\n if (value == null) {\n dest.push(new GQLError(nullMsg, locs, path, undefined, capStack));\n return null;\n }\n if (value instanceof Error) {\n dest.push(\n new GQLError(value.message ?? value, locs, path, value, capStack)\n );\n return null;\n }\n return serialize(ctx, value, errHandler, ...parentIndexes);\n },\n\n checkNullableLeaf(\n ctx: ExecutionContext,\n value: unknown,\n dest: any[],\n locs: any,\n path: any,\n capStack: boolean,\n serialize: Serializer,\n errHandler: any,\n ...parentIndexes: number[]\n ): any {\n if (value == null) return null;\n const GQLError = ctx.GraphQLError as any;\n if (value instanceof Error) {\n dest.push(\n new GQLError(value.message ?? value, locs, path, value, capStack)\n );\n return null;\n }\n return serialize(ctx, value, errHandler, ...parentIndexes);\n },\n\n callResolver(\n ctx: ExecutionContext,\n call: () => unknown,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n ): void {\n let value: unknown;\n try {\n value = call();\n } catch (err) {\n onError(err);\n onSuccess(null);\n return;\n }\n this.handleResolverResult(ctx, value, onSuccess, onError);\n },\n\n handleResolverResult(\n ctx: ExecutionContext,\n value: unknown,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n ): void {\n if (this.isPromise(value)) {\n resolvePromise(ctx, value as Promise<unknown>, onSuccess, onError);\n } else {\n onSuccess(value);\n }\n },\n\n handleListItemResult(\n ctx: ExecutionContext,\n item: unknown,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n ): void {\n if (this.isPromise(item)) {\n resolvePromise(ctx, item as Promise<unknown>, onSuccess, onError);\n } else {\n onSuccess(item);\n }\n },\n\n finalizeResult(ctx: ExecutionContext): Promise<unknown> | undefined {\n if (ctx.promiseCounter > 0) {\n return new Promise((resolve) => {\n ctx.resolve = resolve;\n });\n }\n return undefined;\n },\n\n safeMap(\n ctx: ExecutionContext,\n iterable: Iterable<unknown> | string,\n cb: (\n context: ExecutionContext,\n a: unknown,\n index: number,\n resultArray: unknown[],\n ...idx: number[]\n ) => void,\n ...idx: number[]\n ): unknown[] {\n let index = 0;\n const result: unknown[] = [];\n for (const a of iterable as Iterable<unknown>) {\n cb(ctx, a, index, result, ...idx);\n ++index;\n }\n return result;\n }\n};\n\nexport type JitRuntime = typeof jitRuntime;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,SAAS,eACP,KACA,SACA,WACA,SACM;AACN,IAAE,IAAI;AACN,UAAQ;AAAA,IACN,CAAC,WAAW;AACV,gBAAU,MAAM;AAChB,QAAE,IAAI;AACN,UAAI,IAAI,mBAAmB,EAAG,KAAI,QAAS,GAAG;AAAA,IAChD;AAAA,IACA,CAAC,QAAQ;AACP,cAAQ,GAAG;AACX,QAAE,IAAI;AACN,UAAI,IAAI,mBAAmB,EAAG,KAAI,QAAS,GAAG;AAAA,IAChD;AAAA,EACF;AACF;AAEO,MAAM,aAAa;AAAA,EACxB,UAAU,OAAyB;AACjC,WACE,SAAS,QACT,OAAO,UAAU,YACjB,OAAQ,MAAc,SAAS;AAAA,EAEnC;AAAA,EAEA,iBACE,KACA,OACA,MACA,SACA,MACA,MACA,UACA,WACA,eACG,eACE;AACL,UAAM,WAAW,IAAI;AACrB,QAAI,SAAS,MAAM;AACjB,WAAK,KAAK,IAAI,SAAS,SAAS,MAAM,MAAM,QAAW,QAAQ,CAAC;AAChE,aAAO;AAAA,IACT;AACA,QAAI,iBAAiB,OAAO;AAC1B,WAAK;AAAA,QACH,IAAI,SAAS,MAAM,WAAW,OAAO,MAAM,MAAM,OAAO,QAAQ;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AACA,WAAO,UAAU,KAAK,OAAO,YAAY,GAAG,aAAa;AAAA,EAC3D;AAAA,EAEA,kBACE,KACA,OACA,MACA,MACA,MACA,UACA,WACA,eACG,eACE;AACL,QAAI,SAAS,KAAM,QAAO;AAC1B,UAAM,WAAW,IAAI;AACrB,QAAI,iBAAiB,OAAO;AAC1B,WAAK;AAAA,QACH,IAAI,SAAS,MAAM,WAAW,OAAO,MAAM,MAAM,OAAO,QAAQ;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AACA,WAAO,UAAU,KAAK,OAAO,YAAY,GAAG,aAAa;AAAA,EAC3D;AAAA,EAEA,aACE,KACA,MACA,WACA,SACM;AACN,QAAI;AACJ,QAAI;AACF,cAAQ,KAAK;AAAA,IACf,SAAS,KAAK;AACZ,cAAQ,GAAG;AACX,gBAAU,IAAI;AACd;AAAA,IACF;AACA,SAAK,qBAAqB,KAAK,OAAO,WAAW,OAAO;AAAA,EAC1D;AAAA,EAEA,qBACE,KACA,OACA,WACA,SACM;AACN,QAAI,KAAK,UAAU,KAAK,GAAG;AACzB,qBAAe,KAAK,OAA2B,WAAW,OAAO;AAAA,IACnE,OAAO;AACL,gBAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,qBACE,KACA,MACA,WACA,SACM;AACN,QAAI,KAAK,UAAU,IAAI,GAAG;AACxB,qBAAe,KAAK,MAA0B,WAAW,OAAO;AAAA,IAClE,OAAO;AACL,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,eAAe,KAAqD;AAClE,QAAI,IAAI,iBAAiB,GAAG;AAC1B,aAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,YAAI,UAAU;AAAA,MAChB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QACE,KACA,UACA,OAOG,KACQ;AACX,QAAI,QAAQ;AACZ,UAAM,SAAoB,CAAC;AAC3B,eAAW,KAAK,UAA+B;AAC7C,SAAG,KAAK,GAAG,OAAO,QAAQ,GAAG,GAAG;AAChC,QAAE;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
|
package/dist/runtime.mjs
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
function resolvePromise(ctx, promise, onSuccess, onError) {
|
|
2
|
-
++ctx.promiseCounter;
|
|
3
|
-
promise.then(
|
|
4
|
-
(result) => {
|
|
5
|
-
onSuccess(result);
|
|
6
|
-
--ctx.promiseCounter;
|
|
7
|
-
if (ctx.promiseCounter === 0) ctx.resolve(ctx);
|
|
8
|
-
},
|
|
9
|
-
(err) => {
|
|
10
|
-
onError(err);
|
|
11
|
-
--ctx.promiseCounter;
|
|
12
|
-
if (ctx.promiseCounter === 0) ctx.resolve(ctx);
|
|
13
|
-
}
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
const jitRuntime = {
|
|
17
|
-
isPromise(value) {
|
|
18
|
-
return value != null && typeof value === "object" && typeof value.then === "function";
|
|
19
|
-
},
|
|
20
|
-
checkNonNullLeaf(ctx, value, dest, nullMsg, locs, path, capStack, serialize, errHandler, ...parentIndexes) {
|
|
21
|
-
const GQLError = ctx.GraphQLError;
|
|
22
|
-
if (value == null) {
|
|
23
|
-
dest.push(new GQLError(nullMsg, locs, path, void 0, capStack));
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
if (value instanceof Error) {
|
|
27
|
-
dest.push(
|
|
28
|
-
new GQLError(value.message ?? value, locs, path, value, capStack)
|
|
29
|
-
);
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return serialize(ctx, value, errHandler, ...parentIndexes);
|
|
33
|
-
},
|
|
34
|
-
checkNullableLeaf(ctx, value, dest, locs, path, capStack, serialize, errHandler, ...parentIndexes) {
|
|
35
|
-
if (value == null) return null;
|
|
36
|
-
const GQLError = ctx.GraphQLError;
|
|
37
|
-
if (value instanceof Error) {
|
|
38
|
-
dest.push(
|
|
39
|
-
new GQLError(value.message ?? value, locs, path, value, capStack)
|
|
40
|
-
);
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
return serialize(ctx, value, errHandler, ...parentIndexes);
|
|
44
|
-
},
|
|
45
|
-
callResolver(ctx, call, onSuccess, onError) {
|
|
46
|
-
let value;
|
|
47
|
-
try {
|
|
48
|
-
value = call();
|
|
49
|
-
} catch (err) {
|
|
50
|
-
onError(err);
|
|
51
|
-
onSuccess(null);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
this.handleResolverResult(ctx, value, onSuccess, onError);
|
|
55
|
-
},
|
|
56
|
-
handleResolverResult(ctx, value, onSuccess, onError) {
|
|
57
|
-
if (this.isPromise(value)) {
|
|
58
|
-
resolvePromise(ctx, value, onSuccess, onError);
|
|
59
|
-
} else {
|
|
60
|
-
onSuccess(value);
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
handleListItemResult(ctx, item, onSuccess, onError) {
|
|
64
|
-
if (this.isPromise(item)) {
|
|
65
|
-
resolvePromise(ctx, item, onSuccess, onError);
|
|
66
|
-
} else {
|
|
67
|
-
onSuccess(item);
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
finalizeResult(ctx) {
|
|
71
|
-
if (ctx.promiseCounter > 0) {
|
|
72
|
-
return new Promise((resolve) => {
|
|
73
|
-
ctx.resolve = resolve;
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return void 0;
|
|
77
|
-
},
|
|
78
|
-
safeMap(ctx, iterable, cb, ...idx) {
|
|
79
|
-
let index = 0;
|
|
80
|
-
const result = [];
|
|
81
|
-
for (const a of iterable) {
|
|
82
|
-
cb(ctx, a, index, result, ...idx);
|
|
83
|
-
++index;
|
|
84
|
-
}
|
|
85
|
-
return result;
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
export {
|
|
89
|
-
jitRuntime
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=runtime.mjs.map
|
package/dist/runtime.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runtime.ts"],"sourcesContent":["import { type ExecutionContext } from \"./execution\";\n\ntype Serializer = (\n c: ExecutionContext,\n v: any,\n onError: any,\n ...idx: number[]\n) => any;\n\nfunction resolvePromise(\n ctx: ExecutionContext,\n promise: Promise<unknown>,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n): void {\n ++ctx.promiseCounter;\n promise.then(\n (result) => {\n onSuccess(result);\n --ctx.promiseCounter;\n if (ctx.promiseCounter === 0) ctx.resolve!(ctx);\n },\n (err) => {\n onError(err);\n --ctx.promiseCounter;\n if (ctx.promiseCounter === 0) ctx.resolve!(ctx);\n }\n );\n}\n\nexport const jitRuntime = {\n isPromise(value: unknown): boolean {\n return (\n value != null &&\n typeof value === \"object\" &&\n typeof (value as any).then === \"function\"\n );\n },\n\n checkNonNullLeaf(\n ctx: ExecutionContext,\n value: unknown,\n dest: any[],\n nullMsg: string,\n locs: any,\n path: any,\n capStack: boolean,\n serialize: Serializer,\n errHandler: any,\n ...parentIndexes: number[]\n ): any {\n const GQLError = ctx.GraphQLError as any;\n if (value == null) {\n dest.push(new GQLError(nullMsg, locs, path, undefined, capStack));\n return null;\n }\n if (value instanceof Error) {\n dest.push(\n new GQLError(value.message ?? value, locs, path, value, capStack)\n );\n return null;\n }\n return serialize(ctx, value, errHandler, ...parentIndexes);\n },\n\n checkNullableLeaf(\n ctx: ExecutionContext,\n value: unknown,\n dest: any[],\n locs: any,\n path: any,\n capStack: boolean,\n serialize: Serializer,\n errHandler: any,\n ...parentIndexes: number[]\n ): any {\n if (value == null) return null;\n const GQLError = ctx.GraphQLError as any;\n if (value instanceof Error) {\n dest.push(\n new GQLError(value.message ?? value, locs, path, value, capStack)\n );\n return null;\n }\n return serialize(ctx, value, errHandler, ...parentIndexes);\n },\n\n callResolver(\n ctx: ExecutionContext,\n call: () => unknown,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n ): void {\n let value: unknown;\n try {\n value = call();\n } catch (err) {\n onError(err);\n onSuccess(null);\n return;\n }\n this.handleResolverResult(ctx, value, onSuccess, onError);\n },\n\n handleResolverResult(\n ctx: ExecutionContext,\n value: unknown,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n ): void {\n if (this.isPromise(value)) {\n resolvePromise(ctx, value as Promise<unknown>, onSuccess, onError);\n } else {\n onSuccess(value);\n }\n },\n\n handleListItemResult(\n ctx: ExecutionContext,\n item: unknown,\n onSuccess: (result: unknown) => void,\n onError: (err: unknown) => void\n ): void {\n if (this.isPromise(item)) {\n resolvePromise(ctx, item as Promise<unknown>, onSuccess, onError);\n } else {\n onSuccess(item);\n }\n },\n\n finalizeResult(ctx: ExecutionContext): Promise<unknown> | undefined {\n if (ctx.promiseCounter > 0) {\n return new Promise((resolve) => {\n ctx.resolve = resolve;\n });\n }\n return undefined;\n },\n\n safeMap(\n ctx: ExecutionContext,\n iterable: Iterable<unknown> | string,\n cb: (\n context: ExecutionContext,\n a: unknown,\n index: number,\n resultArray: unknown[],\n ...idx: number[]\n ) => void,\n ...idx: number[]\n ): unknown[] {\n let index = 0;\n const result: unknown[] = [];\n for (const a of iterable as Iterable<unknown>) {\n cb(ctx, a, index, result, ...idx);\n ++index;\n }\n return result;\n }\n};\n\nexport type JitRuntime = typeof jitRuntime;\n"],"mappings":"AASA,SAAS,eACP,KACA,SACA,WACA,SACM;AACN,IAAE,IAAI;AACN,UAAQ;AAAA,IACN,CAAC,WAAW;AACV,gBAAU,MAAM;AAChB,QAAE,IAAI;AACN,UAAI,IAAI,mBAAmB,EAAG,KAAI,QAAS,GAAG;AAAA,IAChD;AAAA,IACA,CAAC,QAAQ;AACP,cAAQ,GAAG;AACX,QAAE,IAAI;AACN,UAAI,IAAI,mBAAmB,EAAG,KAAI,QAAS,GAAG;AAAA,IAChD;AAAA,EACF;AACF;AAEO,MAAM,aAAa;AAAA,EACxB,UAAU,OAAyB;AACjC,WACE,SAAS,QACT,OAAO,UAAU,YACjB,OAAQ,MAAc,SAAS;AAAA,EAEnC;AAAA,EAEA,iBACE,KACA,OACA,MACA,SACA,MACA,MACA,UACA,WACA,eACG,eACE;AACL,UAAM,WAAW,IAAI;AACrB,QAAI,SAAS,MAAM;AACjB,WAAK,KAAK,IAAI,SAAS,SAAS,MAAM,MAAM,QAAW,QAAQ,CAAC;AAChE,aAAO;AAAA,IACT;AACA,QAAI,iBAAiB,OAAO;AAC1B,WAAK;AAAA,QACH,IAAI,SAAS,MAAM,WAAW,OAAO,MAAM,MAAM,OAAO,QAAQ;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AACA,WAAO,UAAU,KAAK,OAAO,YAAY,GAAG,aAAa;AAAA,EAC3D;AAAA,EAEA,kBACE,KACA,OACA,MACA,MACA,MACA,UACA,WACA,eACG,eACE;AACL,QAAI,SAAS,KAAM,QAAO;AAC1B,UAAM,WAAW,IAAI;AACrB,QAAI,iBAAiB,OAAO;AAC1B,WAAK;AAAA,QACH,IAAI,SAAS,MAAM,WAAW,OAAO,MAAM,MAAM,OAAO,QAAQ;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AACA,WAAO,UAAU,KAAK,OAAO,YAAY,GAAG,aAAa;AAAA,EAC3D;AAAA,EAEA,aACE,KACA,MACA,WACA,SACM;AACN,QAAI;AACJ,QAAI;AACF,cAAQ,KAAK;AAAA,IACf,SAAS,KAAK;AACZ,cAAQ,GAAG;AACX,gBAAU,IAAI;AACd;AAAA,IACF;AACA,SAAK,qBAAqB,KAAK,OAAO,WAAW,OAAO;AAAA,EAC1D;AAAA,EAEA,qBACE,KACA,OACA,WACA,SACM;AACN,QAAI,KAAK,UAAU,KAAK,GAAG;AACzB,qBAAe,KAAK,OAA2B,WAAW,OAAO;AAAA,IACnE,OAAO;AACL,gBAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,qBACE,KACA,MACA,WACA,SACM;AACN,QAAI,KAAK,UAAU,IAAI,GAAG;AACxB,qBAAe,KAAK,MAA0B,WAAW,OAAO;AAAA,IAClE,OAAO;AACL,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,eAAe,KAAqD;AAClE,QAAI,IAAI,iBAAiB,GAAG;AAC1B,aAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,YAAI,UAAU;AAAA,MAChB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QACE,KACA,UACA,OAOG,KACQ;AACX,QAAI,QAAQ;AACZ,UAAM,SAAoB,CAAC;AAC3B,eAAW,KAAK,UAA+B;AAC7C,SAAG,KAAK,GAAG,OAAO,QAAQ,GAAG,GAAG;AAChC,QAAE;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
|
package/dist/types.d.mts
DELETED
package/dist/types.d.ts
DELETED
package/dist/types.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __copyProps = (to, from, except, desc) => {
|
|
7
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
-
for (let key of __getOwnPropNames(from))
|
|
9
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
-
}
|
|
12
|
-
return to;
|
|
13
|
-
};
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
-
var types_exports = {};
|
|
16
|
-
module.exports = __toCommonJS(types_exports);
|
|
17
|
-
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["// Vendored version of the Maybe type from graphql so we can support different graphql versions where it has moved around\nexport type Maybe<T> = null | undefined | T;\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/dist/types.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.mjs.map
|
package/dist/types.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/variables.d.mts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { GraphQLSchema, VariableDefinitionNode, GraphQLError } from 'graphql';
|
|
2
|
-
|
|
3
|
-
interface FailedVariableCoercion {
|
|
4
|
-
errors: ReadonlyArray<GraphQLError>;
|
|
5
|
-
}
|
|
6
|
-
interface VariableValues {
|
|
7
|
-
coerced: {
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
type CoercedVariableValues = FailedVariableCoercion | VariableValues;
|
|
12
|
-
declare function failToParseVariables(x: any): x is FailedVariableCoercion;
|
|
13
|
-
declare function compileVariableParsing(schema: GraphQLSchema, varDefNodes: ReadonlyArray<VariableDefinitionNode>): (inputs: {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}) => CoercedVariableValues;
|
|
16
|
-
|
|
17
|
-
export { type CoercedVariableValues, compileVariableParsing, failToParseVariables };
|
package/dist/variables.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { GraphQLSchema, VariableDefinitionNode, GraphQLError } from 'graphql';
|
|
2
|
-
|
|
3
|
-
interface FailedVariableCoercion {
|
|
4
|
-
errors: ReadonlyArray<GraphQLError>;
|
|
5
|
-
}
|
|
6
|
-
interface VariableValues {
|
|
7
|
-
coerced: {
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
type CoercedVariableValues = FailedVariableCoercion | VariableValues;
|
|
12
|
-
declare function failToParseVariables(x: any): x is FailedVariableCoercion;
|
|
13
|
-
declare function compileVariableParsing(schema: GraphQLSchema, varDefNodes: ReadonlyArray<VariableDefinitionNode>): (inputs: {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}) => CoercedVariableValues;
|
|
16
|
-
|
|
17
|
-
export { type CoercedVariableValues, compileVariableParsing, failToParseVariables };
|