UNPKG

7.21 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7const tslib = require('tslib');
8const graphql = require('graphql');
9const DataLoader = _interopDefault(require('dataloader'));
10const delegate = require('@graphql-tools/delegate/es5');
11
12var VisitSchemaKind;
13(function (VisitSchemaKind) {
14 VisitSchemaKind["TYPE"] = "VisitSchemaKind.TYPE";
15 VisitSchemaKind["SCALAR_TYPE"] = "VisitSchemaKind.SCALAR_TYPE";
16 VisitSchemaKind["ENUM_TYPE"] = "VisitSchemaKind.ENUM_TYPE";
17 VisitSchemaKind["COMPOSITE_TYPE"] = "VisitSchemaKind.COMPOSITE_TYPE";
18 VisitSchemaKind["OBJECT_TYPE"] = "VisitSchemaKind.OBJECT_TYPE";
19 VisitSchemaKind["INPUT_OBJECT_TYPE"] = "VisitSchemaKind.INPUT_OBJECT_TYPE";
20 VisitSchemaKind["ABSTRACT_TYPE"] = "VisitSchemaKind.ABSTRACT_TYPE";
21 VisitSchemaKind["UNION_TYPE"] = "VisitSchemaKind.UNION_TYPE";
22 VisitSchemaKind["INTERFACE_TYPE"] = "VisitSchemaKind.INTERFACE_TYPE";
23 VisitSchemaKind["ROOT_OBJECT"] = "VisitSchemaKind.ROOT_OBJECT";
24 VisitSchemaKind["QUERY"] = "VisitSchemaKind.QUERY";
25 VisitSchemaKind["MUTATION"] = "VisitSchemaKind.MUTATION";
26 VisitSchemaKind["SUBSCRIPTION"] = "VisitSchemaKind.SUBSCRIPTION";
27})(VisitSchemaKind || (VisitSchemaKind = {}));
28var MapperKind;
29(function (MapperKind) {
30 MapperKind["TYPE"] = "MapperKind.TYPE";
31 MapperKind["SCALAR_TYPE"] = "MapperKind.SCALAR_TYPE";
32 MapperKind["ENUM_TYPE"] = "MapperKind.ENUM_TYPE";
33 MapperKind["COMPOSITE_TYPE"] = "MapperKind.COMPOSITE_TYPE";
34 MapperKind["OBJECT_TYPE"] = "MapperKind.OBJECT_TYPE";
35 MapperKind["INPUT_OBJECT_TYPE"] = "MapperKind.INPUT_OBJECT_TYPE";
36 MapperKind["ABSTRACT_TYPE"] = "MapperKind.ABSTRACT_TYPE";
37 MapperKind["UNION_TYPE"] = "MapperKind.UNION_TYPE";
38 MapperKind["INTERFACE_TYPE"] = "MapperKind.INTERFACE_TYPE";
39 MapperKind["ROOT_OBJECT"] = "MapperKind.ROOT_OBJECT";
40 MapperKind["QUERY"] = "MapperKind.QUERY";
41 MapperKind["MUTATION"] = "MapperKind.MUTATION";
42 MapperKind["SUBSCRIPTION"] = "MapperKind.SUBSCRIPTION";
43 MapperKind["DIRECTIVE"] = "MapperKind.DIRECTIVE";
44 MapperKind["FIELD"] = "MapperKind.FIELD";
45 MapperKind["COMPOSITE_FIELD"] = "MapperKind.COMPOSITE_FIELD";
46 MapperKind["OBJECT_FIELD"] = "MapperKind.OBJECT_FIELD";
47 MapperKind["ROOT_FIELD"] = "MapperKind.ROOT_FIELD";
48 MapperKind["QUERY_ROOT_FIELD"] = "MapperKind.QUERY_ROOT_FIELD";
49 MapperKind["MUTATION_ROOT_FIELD"] = "MapperKind.MUTATION_ROOT_FIELD";
50 MapperKind["SUBSCRIPTION_ROOT_FIELD"] = "MapperKind.SUBSCRIPTION_ROOT_FIELD";
51 MapperKind["INTERFACE_FIELD"] = "MapperKind.INTERFACE_FIELD";
52 MapperKind["INPUT_OBJECT_FIELD"] = "MapperKind.INPUT_OBJECT_FIELD";
53 MapperKind["ARGUMENT"] = "MapperKind.ARGUMENT";
54 MapperKind["ENUM_VALUE"] = "MapperKind.ENUM_VALUE";
55})(MapperKind || (MapperKind = {}));
56
57function relocatedError(originalError, path) {
58 return new graphql.GraphQLError(originalError.message, originalError.nodes, originalError.source, originalError.positions, path === null ? undefined : path === undefined ? originalError.path : path, originalError.originalError, originalError.extensions);
59}
60
61var cache1 = new WeakMap();
62function createBatchFn(options) {
63 var _this = this;
64 var _a;
65 var argsFromKeys = (_a = options.argsFromKeys) !== null && _a !== void 0 ? _a : (function (keys) { return ({ ids: keys }); });
66 var valuesFromResults = options.valuesFromResults, lazyOptionsFn = options.lazyOptionsFn;
67 return function (keys) { return tslib.__awaiter(_this, void 0, void 0, function () {
68 var results, values;
69 return tslib.__generator(this, function (_a) {
70 switch (_a.label) {
71 case 0: return [4 /*yield*/, delegate.delegateToSchema(tslib.__assign({ returnType: new graphql.GraphQLList(graphql.getNamedType(options.info.returnType)), onLocatedError: function (originalError) {
72 return relocatedError(originalError, originalError.path.slice(0, 0).concat(originalError.path.slice(2)));
73 }, args: argsFromKeys(keys) }, (lazyOptionsFn == null ? options : lazyOptionsFn(options))))];
74 case 1:
75 results = _a.sent();
76 if (results instanceof Error) {
77 return [2 /*return*/, keys.map(function () { return results; })];
78 }
79 values = valuesFromResults == null ? results : valuesFromResults(results, keys);
80 return [2 /*return*/, Array.isArray(values) ? values : keys.map(function () { return values; })];
81 }
82 });
83 }); };
84}
85function getLoader(options) {
86 var _a;
87 var fieldName = (_a = options.fieldName) !== null && _a !== void 0 ? _a : options.info.fieldName;
88 var cache2 = cache1.get(options.info.fieldNodes);
89 if (cache2 === undefined) {
90 cache2 = new WeakMap();
91 cache1.set(options.info.fieldNodes, cache2);
92 var loaders_1 = Object.create(null);
93 cache2.set(options.schema, loaders_1);
94 var batchFn_1 = createBatchFn(options);
95 var loader_1 = new DataLoader(function (keys) { return batchFn_1(keys); }, options.dataLoaderOptions);
96 loaders_1[fieldName] = loader_1;
97 return loader_1;
98 }
99 var loaders = cache2.get(options.schema);
100 if (loaders === undefined) {
101 loaders = Object.create(null);
102 cache2.set(options.schema, loaders);
103 var batchFn_2 = createBatchFn(options);
104 var loader_2 = new DataLoader(function (keys) { return batchFn_2(keys); }, options.dataLoaderOptions);
105 loaders[fieldName] = loader_2;
106 return loader_2;
107 }
108 var loader = loaders[fieldName];
109 if (loader === undefined) {
110 var batchFn_3 = createBatchFn(options);
111 loader = new DataLoader(function (keys) { return batchFn_3(keys); }, options.dataLoaderOptions);
112 loaders[fieldName] = loader;
113 }
114 return loader;
115}
116
117function batchDelegateToSchema(options) {
118 var key = options.key;
119 if (key == null) {
120 return null;
121 }
122 else if (Array.isArray(key) && !key.length) {
123 return [];
124 }
125 var loader = getLoader(options);
126 return Array.isArray(key) ? loader.loadMany(key) : loader.load(key);
127}
128
129function createBatchDelegateFn(optionsOrArgsFromKeys, lazyOptionsFn, dataLoaderOptions, valuesFromResults) {
130 return typeof optionsOrArgsFromKeys === 'function'
131 ? createBatchDelegateFnImpl({
132 argsFromKeys: optionsOrArgsFromKeys,
133 lazyOptionsFn: lazyOptionsFn,
134 dataLoaderOptions: dataLoaderOptions,
135 valuesFromResults: valuesFromResults,
136 })
137 : createBatchDelegateFnImpl(optionsOrArgsFromKeys);
138}
139function createBatchDelegateFnImpl(options) {
140 return function (batchDelegateOptions) {
141 var loader = getLoader(tslib.__assign(tslib.__assign({}, options), batchDelegateOptions));
142 return loader.load(batchDelegateOptions.key);
143 };
144}
145
146exports.batchDelegateToSchema = batchDelegateToSchema;
147exports.createBatchDelegateFn = createBatchDelegateFn;
148//# sourceMappingURL=index.cjs.js.map