@avantstay/graphql-ts-client 10.5.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/dist/index.js ADDED
@@ -0,0 +1,985 @@
1
+ "use strict";
2
+ function _array_like_to_array(arr, len) {
3
+ if (len == null || len > arr.length) len = arr.length;
4
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
5
+ return arr2;
6
+ }
7
+ function _array_with_holes(arr) {
8
+ if (Array.isArray(arr)) return arr;
9
+ }
10
+ function _array_without_holes(arr) {
11
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
12
+ }
13
+ function _assert_this_initialized(self) {
14
+ if (self === void 0) {
15
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
16
+ }
17
+ return self;
18
+ }
19
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
20
+ try {
21
+ var info = gen[key](arg);
22
+ var value = info.value;
23
+ } catch (error) {
24
+ reject(error);
25
+ return;
26
+ }
27
+ if (info.done) {
28
+ resolve(value);
29
+ } else {
30
+ Promise.resolve(value).then(_next, _throw);
31
+ }
32
+ }
33
+ function _async_to_generator(fn) {
34
+ return function() {
35
+ var self = this, args = arguments;
36
+ return new Promise(function(resolve, reject) {
37
+ var gen = fn.apply(self, args);
38
+ function _next(value) {
39
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
40
+ }
41
+ function _throw(err) {
42
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
43
+ }
44
+ _next(undefined);
45
+ });
46
+ };
47
+ }
48
+ function _class_call_check(instance, Constructor) {
49
+ if (!(instance instanceof Constructor)) {
50
+ throw new TypeError("Cannot call a class as a function");
51
+ }
52
+ }
53
+ function _construct(Parent, args, Class) {
54
+ if (_is_native_reflect_construct()) {
55
+ _construct = Reflect.construct;
56
+ } else {
57
+ _construct = function construct(Parent, args, Class) {
58
+ var a = [
59
+ null
60
+ ];
61
+ a.push.apply(a, args);
62
+ var Constructor = Function.bind.apply(Parent, a);
63
+ var instance = new Constructor();
64
+ if (Class) _set_prototype_of(instance, Class.prototype);
65
+ return instance;
66
+ };
67
+ }
68
+ return _construct.apply(null, arguments);
69
+ }
70
+ function _defineProperties(target, props) {
71
+ for(var i = 0; i < props.length; i++){
72
+ var descriptor = props[i];
73
+ descriptor.enumerable = descriptor.enumerable || false;
74
+ descriptor.configurable = true;
75
+ if ("value" in descriptor) descriptor.writable = true;
76
+ Object.defineProperty(target, descriptor.key, descriptor);
77
+ }
78
+ }
79
+ function _create_class(Constructor, protoProps, staticProps) {
80
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
81
+ if (staticProps) _defineProperties(Constructor, staticProps);
82
+ return Constructor;
83
+ }
84
+ function _define_property(obj, key, value) {
85
+ if (key in obj) {
86
+ Object.defineProperty(obj, key, {
87
+ value: value,
88
+ enumerable: true,
89
+ configurable: true,
90
+ writable: true
91
+ });
92
+ } else {
93
+ obj[key] = value;
94
+ }
95
+ return obj;
96
+ }
97
+ function _get_prototype_of(o) {
98
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
99
+ return o.__proto__ || Object.getPrototypeOf(o);
100
+ };
101
+ return _get_prototype_of(o);
102
+ }
103
+ function _inherits(subClass, superClass) {
104
+ if (typeof superClass !== "function" && superClass !== null) {
105
+ throw new TypeError("Super expression must either be null or a function");
106
+ }
107
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
108
+ constructor: {
109
+ value: subClass,
110
+ writable: true,
111
+ configurable: true
112
+ }
113
+ });
114
+ if (superClass) _set_prototype_of(subClass, superClass);
115
+ }
116
+ function _is_native_function(fn) {
117
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
118
+ }
119
+ function _iterable_to_array(iter) {
120
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
121
+ }
122
+ function _iterable_to_array_limit(arr, i) {
123
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
124
+ if (_i == null) return;
125
+ var _arr = [];
126
+ var _n = true;
127
+ var _d = false;
128
+ var _s, _e;
129
+ try {
130
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
131
+ _arr.push(_s.value);
132
+ if (i && _arr.length === i) break;
133
+ }
134
+ } catch (err) {
135
+ _d = true;
136
+ _e = err;
137
+ } finally{
138
+ try {
139
+ if (!_n && _i["return"] != null) _i["return"]();
140
+ } finally{
141
+ if (_d) throw _e;
142
+ }
143
+ }
144
+ return _arr;
145
+ }
146
+ function _non_iterable_rest() {
147
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
148
+ }
149
+ function _non_iterable_spread() {
150
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
151
+ }
152
+ function _object_spread(target) {
153
+ for(var i = 1; i < arguments.length; i++){
154
+ var source = arguments[i] != null ? arguments[i] : {};
155
+ var ownKeys = Object.keys(source);
156
+ if (typeof Object.getOwnPropertySymbols === "function") {
157
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
158
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
159
+ }));
160
+ }
161
+ ownKeys.forEach(function(key) {
162
+ _define_property(target, key, source[key]);
163
+ });
164
+ }
165
+ return target;
166
+ }
167
+ function ownKeys(object, enumerableOnly) {
168
+ var keys = Object.keys(object);
169
+ if (Object.getOwnPropertySymbols) {
170
+ var symbols = Object.getOwnPropertySymbols(object);
171
+ if (enumerableOnly) {
172
+ symbols = symbols.filter(function(sym) {
173
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
174
+ });
175
+ }
176
+ keys.push.apply(keys, symbols);
177
+ }
178
+ return keys;
179
+ }
180
+ function _object_spread_props(target, source) {
181
+ source = source != null ? source : {};
182
+ if (Object.getOwnPropertyDescriptors) {
183
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
184
+ } else {
185
+ ownKeys(Object(source)).forEach(function(key) {
186
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
187
+ });
188
+ }
189
+ return target;
190
+ }
191
+ function _object_without_properties(source, excluded) {
192
+ if (source == null) return {};
193
+ var target = _object_without_properties_loose(source, excluded);
194
+ var key, i;
195
+ if (Object.getOwnPropertySymbols) {
196
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
197
+ for(i = 0; i < sourceSymbolKeys.length; i++){
198
+ key = sourceSymbolKeys[i];
199
+ if (excluded.indexOf(key) >= 0) continue;
200
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
201
+ target[key] = source[key];
202
+ }
203
+ }
204
+ return target;
205
+ }
206
+ function _object_without_properties_loose(source, excluded) {
207
+ if (source == null) return {};
208
+ var target = {};
209
+ var sourceKeys = Object.keys(source);
210
+ var key, i;
211
+ for(i = 0; i < sourceKeys.length; i++){
212
+ key = sourceKeys[i];
213
+ if (excluded.indexOf(key) >= 0) continue;
214
+ target[key] = source[key];
215
+ }
216
+ return target;
217
+ }
218
+ function _possible_constructor_return(self, call) {
219
+ if (call && (_type_of(call) === "object" || typeof call === "function")) {
220
+ return call;
221
+ }
222
+ return _assert_this_initialized(self);
223
+ }
224
+ function _set_prototype_of(o, p) {
225
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
226
+ o.__proto__ = p;
227
+ return o;
228
+ };
229
+ return _set_prototype_of(o, p);
230
+ }
231
+ function _sliced_to_array(arr, i) {
232
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
233
+ }
234
+ function _to_consumable_array(arr) {
235
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
236
+ }
237
+ function _type_of(obj) {
238
+ "@swc/helpers - typeof";
239
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
240
+ }
241
+ function _unsupported_iterable_to_array(o, minLen) {
242
+ if (!o) return;
243
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
244
+ var n = Object.prototype.toString.call(o).slice(8, -1);
245
+ if (n === "Object" && o.constructor) n = o.constructor.name;
246
+ if (n === "Map" || n === "Set") return Array.from(n);
247
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
248
+ }
249
+ function _wrap_native_super(Class) {
250
+ var _cache = typeof Map === "function" ? new Map() : undefined;
251
+ _wrap_native_super = function wrapNativeSuper(Class) {
252
+ if (Class === null || !_is_native_function(Class)) return Class;
253
+ if (typeof Class !== "function") {
254
+ throw new TypeError("Super expression must either be null or a function");
255
+ }
256
+ if (typeof _cache !== "undefined") {
257
+ if (_cache.has(Class)) return _cache.get(Class);
258
+ _cache.set(Class, Wrapper);
259
+ }
260
+ function Wrapper() {
261
+ return _construct(Class, arguments, _get_prototype_of(this).constructor);
262
+ }
263
+ Wrapper.prototype = Object.create(Class.prototype, {
264
+ constructor: {
265
+ value: Wrapper,
266
+ enumerable: false,
267
+ writable: true,
268
+ configurable: true
269
+ }
270
+ });
271
+ return _set_prototype_of(Wrapper, Class);
272
+ };
273
+ return _wrap_native_super(Class);
274
+ }
275
+ function _is_native_reflect_construct() {
276
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
277
+ if (Reflect.construct.sham) return false;
278
+ if (typeof Proxy === "function") return true;
279
+ try {
280
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
281
+ return true;
282
+ } catch (e) {
283
+ return false;
284
+ }
285
+ }
286
+ function _create_super(Derived) {
287
+ var hasNativeReflectConstruct = _is_native_reflect_construct();
288
+ return function _createSuperInternal() {
289
+ var Super = _get_prototype_of(Derived), result;
290
+ if (hasNativeReflectConstruct) {
291
+ var NewTarget = _get_prototype_of(this).constructor;
292
+ result = Reflect.construct(Super, arguments, NewTarget);
293
+ } else {
294
+ result = Super.apply(this, arguments);
295
+ }
296
+ return _possible_constructor_return(this, result);
297
+ };
298
+ }
299
+ function _ts_generator(thisArg, body) {
300
+ var f, y, t, g, _ = {
301
+ label: 0,
302
+ sent: function() {
303
+ if (t[0] & 1) throw t[1];
304
+ return t[1];
305
+ },
306
+ trys: [],
307
+ ops: []
308
+ };
309
+ return g = {
310
+ next: verb(0),
311
+ "throw": verb(1),
312
+ "return": verb(2)
313
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
314
+ return this;
315
+ }), g;
316
+ function verb(n) {
317
+ return function(v) {
318
+ return step([
319
+ n,
320
+ v
321
+ ]);
322
+ };
323
+ }
324
+ function step(op) {
325
+ if (f) throw new TypeError("Generator is already executing.");
326
+ while(_)try {
327
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
328
+ if (y = 0, t) op = [
329
+ op[0] & 2,
330
+ t.value
331
+ ];
332
+ switch(op[0]){
333
+ case 0:
334
+ case 1:
335
+ t = op;
336
+ break;
337
+ case 4:
338
+ _.label++;
339
+ return {
340
+ value: op[1],
341
+ done: false
342
+ };
343
+ case 5:
344
+ _.label++;
345
+ y = op[1];
346
+ op = [
347
+ 0
348
+ ];
349
+ continue;
350
+ case 7:
351
+ op = _.ops.pop();
352
+ _.trys.pop();
353
+ continue;
354
+ default:
355
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
356
+ _ = 0;
357
+ continue;
358
+ }
359
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
360
+ _.label = op[1];
361
+ break;
362
+ }
363
+ if (op[0] === 6 && _.label < t[1]) {
364
+ _.label = t[1];
365
+ t = op;
366
+ break;
367
+ }
368
+ if (t && _.label < t[2]) {
369
+ _.label = t[2];
370
+ _.ops.push(op);
371
+ break;
372
+ }
373
+ if (t[2]) _.ops.pop();
374
+ _.trys.pop();
375
+ continue;
376
+ }
377
+ op = body.call(thisArg, _);
378
+ } catch (e) {
379
+ op = [
380
+ 6,
381
+ e
382
+ ];
383
+ y = 0;
384
+ } finally{
385
+ f = t = 0;
386
+ }
387
+ if (op[0] & 5) throw op[1];
388
+ return {
389
+ value: op[0] ? op[1] : void 0,
390
+ done: true
391
+ };
392
+ }
393
+ }
394
+ var __create = Object.create;
395
+ var __defProp = Object.defineProperty;
396
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
397
+ var __getOwnPropNames = Object.getOwnPropertyNames;
398
+ var __getProtoOf = Object.getPrototypeOf;
399
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
400
+ var __export = function(target, all) {
401
+ for(var name in all)__defProp(target, name, {
402
+ get: all[name],
403
+ enumerable: true
404
+ });
405
+ };
406
+ var __copyProps = function(to, from, except, desc) {
407
+ if (from && typeof from === "object" || typeof from === "function") {
408
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
409
+ try {
410
+ var _loop = function() {
411
+ var key = _step.value;
412
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
413
+ get: function() {
414
+ return from[key];
415
+ },
416
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
417
+ });
418
+ };
419
+ for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
420
+ } catch (err) {
421
+ _didIteratorError = true;
422
+ _iteratorError = err;
423
+ } finally{
424
+ try {
425
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
426
+ _iterator.return();
427
+ }
428
+ } finally{
429
+ if (_didIteratorError) {
430
+ throw _iteratorError;
431
+ }
432
+ }
433
+ }
434
+ }
435
+ return to;
436
+ };
437
+ var __toESM = function(mod, isNodeMode, target) {
438
+ return target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(// If the importer is in node compatibility mode or this is not an ESM
439
+ // file that has been converted to a CommonJS file using a Babel-
440
+ // compatible transform (i.e. "__esModule" has not been set), then set
441
+ // "default" to the CommonJS "module.exports" for node compatibility.
442
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
443
+ value: mod,
444
+ enumerable: true
445
+ }) : target, mod);
446
+ };
447
+ var __toCommonJS = function(mod) {
448
+ return __copyProps(__defProp({}, "__esModule", {
449
+ value: true
450
+ }), mod);
451
+ };
452
+ // src/index.ts
453
+ var src_exports = {};
454
+ __export(src_exports, {
455
+ GraphQLClientError: function() {
456
+ return GraphQLClientError;
457
+ },
458
+ generateTypescriptClient: function() {
459
+ return generateTypescriptClient;
460
+ }
461
+ });
462
+ module.exports = __toCommonJS(src_exports);
463
+ // src/generateTypescriptClient.ts
464
+ var import_axios = __toESM(require("axios"));
465
+ var import_axios_retry = __toESM(require("axios-retry"));
466
+ var import_case = __toESM(require("case"));
467
+ var esbuild = __toESM(require("esbuild"));
468
+ var fs = __toESM(require("fs"));
469
+ var import_graphql = require("graphql");
470
+ var import_lodash = require("lodash");
471
+ var import_orderBy = __toESM(require("lodash/orderBy"));
472
+ var import_set = __toESM(require("lodash/set"));
473
+ var import_md5 = __toESM(require("md5"));
474
+ var import_os = __toESM(require("os"));
475
+ var import_path = __toESM(require("path"));
476
+ var prettier = __toESM(require("prettier"));
477
+ // package.json
478
+ var package_default = {
479
+ name: "@avantstay/graphql-ts-client",
480
+ version: "10.5.0",
481
+ description: "GraphQL Typescript Client Generator",
482
+ author: "Wellington Guimaraes",
483
+ license: "MIT",
484
+ main: "dist/index.js",
485
+ typings: "dist/index.d.ts",
486
+ scripts: {
487
+ build: "tsup src/index.ts src/endpoint.ts --dts",
488
+ test: "cross-env GQL_CLIENT_DIST_PATH='.' jest --watch",
489
+ prepublishOnly: "yarn build"
490
+ },
491
+ files: [
492
+ "dist",
493
+ "src"
494
+ ],
495
+ engines: {
496
+ node: ">=12"
497
+ },
498
+ bugs: {
499
+ url: "https://github.com/avantstay/graphql-ts-client/issues"
500
+ },
501
+ homepage: "https://github.com/avantstay/graphql-ts-client#readme",
502
+ repository: {
503
+ type: "git",
504
+ url: "git+https://github.com/avantstay/graphql-ts-client.git"
505
+ },
506
+ peerDependencies: {},
507
+ prettier: {
508
+ trailingComma: "es5",
509
+ tabWidth: 2,
510
+ proseWrap: "always",
511
+ bracketSpacing: true,
512
+ jsxBracketSameLine: false,
513
+ semi: false,
514
+ singleQuote: true,
515
+ arrowParens: "avoid",
516
+ endOfLine: "lf",
517
+ printWidth: 130,
518
+ htmlWhitespaceSensitivity: "ignore",
519
+ jsxSingleQuote: false
520
+ },
521
+ module: "dist/graphql-ts-client.esm.js",
522
+ "size-limit": [
523
+ {
524
+ path: "dist/graphql-ts-client.cjs.production.min.js",
525
+ limit: "10 KB"
526
+ },
527
+ {
528
+ path: "dist/graphql-ts-client.esm.js",
529
+ limit: "10 KB"
530
+ }
531
+ ],
532
+ dependencies: {
533
+ "@types/md5": "^2.3.2",
534
+ axios: "^1.4.0",
535
+ "axios-retry": "^3.5.1",
536
+ case: "^1.6.3",
537
+ esbuild: "^0.18.16",
538
+ graphql: "^16.7.1",
539
+ lodash: "^4.17.21",
540
+ md5: "^2.3.0",
541
+ moize: "^6.1.6",
542
+ prettier: "^2.8.8",
543
+ "ts-essentials": "^8.1.0"
544
+ },
545
+ devDependencies: {
546
+ "@babel/preset-env": "^7.22.9",
547
+ "@babel/preset-typescript": "^7.22.5",
548
+ "@jest/globals": "^29.6.1",
549
+ "@types/graphql": "^14.5.0",
550
+ "@types/jest": "^29.5.3",
551
+ "@types/lodash": "^4.14.195",
552
+ "@types/node": "^20.4.5",
553
+ "@types/prettier": "^2.7.3",
554
+ "apollo-server": "^3.12.0",
555
+ "cross-env": "^7.0.3",
556
+ jest: "^29.6.1",
557
+ "ts-node": "^10.9.1",
558
+ tsup: "^7.1.0",
559
+ typescript: "^5.1.6",
560
+ "@swc/core": "^1.3.71"
561
+ }
562
+ };
563
+ // src/generateTypescriptClient.ts
564
+ var tempDir = fs.realpathSync(import_os.default.tmpdir());
565
+ var graphqlTsClientPath = process.env.GQL_CLIENT_DIST_PATH || "graphql-ts-client/dist";
566
+ function gqlScalarToTypescript(gqlType) {
567
+ if (/(int|long|double|decimal|float)/i.test(gqlType)) return "number";
568
+ if (/boolean/i.test(gqlType)) return "boolean";
569
+ if (/String/i.test(gqlType)) return "string";
570
+ return gqlType;
571
+ }
572
+ function gqlTypeToTypescript(gqlType) {
573
+ var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref_required = _ref.required, required = _ref_required === void 0 ? false : _ref_required, _ref_isInput = _ref.isInput, isInput = _ref_isInput === void 0 ? false : _ref_isInput, _ref_selection = _ref.selection, selection = _ref_selection === void 0 ? false : _ref_selection;
574
+ if (!gqlType) return "";
575
+ var maybeWrapped = function(it) {
576
+ return required || selection ? it : "Maybe<".concat(it, ">");
577
+ };
578
+ if (typeof gqlType === "string") {
579
+ return maybeWrapped(gqlType);
580
+ }
581
+ if (gqlType.kind.endsWith("OBJECT")) {
582
+ return maybeWrapped(gqlType.name + (selection ? "Selection" : ""));
583
+ }
584
+ if (gqlType.kind === "NON_NULL") {
585
+ return "".concat(gqlTypeToTypescript(gqlType.ofType, {
586
+ isInput: isInput,
587
+ required: true,
588
+ selection: selection
589
+ }));
590
+ }
591
+ if (gqlType.kind === "LIST") {
592
+ return maybeWrapped("".concat(gqlTypeToTypescript(gqlType.ofType, {
593
+ isInput: isInput,
594
+ required: true,
595
+ selection: selection
596
+ })).concat(selection ? "" : "[]"));
597
+ }
598
+ if (selection) {
599
+ return "";
600
+ }
601
+ if (gqlType.kind === "ENUM" && gqlType.name) {
602
+ return maybeWrapped(gqlType.name);
603
+ }
604
+ if (gqlType.kind === "SCALAR") {
605
+ return maybeWrapped(gqlScalarToTypescript(gqlType.name));
606
+ }
607
+ return "";
608
+ }
609
+ function gqlFieldToTypescript(field, param) {
610
+ var isInput = param.isInput, selection = param.selection, defaultValue = param.defaultValue;
611
+ var fieldTypeDefinition = gqlTypeToTypescript(field.type, {
612
+ isInput: isInput,
613
+ selection: selection
614
+ });
615
+ fieldTypeDefinition = "".concat(fieldTypeDefinition);
616
+ if (selection && field.args && field.args.length) {
617
+ var fieldsOnArgs = field.args.map(function(arg) {
618
+ return gqlFieldToTypescript(arg, {
619
+ defaultValue: arg.defaultValue,
620
+ isInput: true,
621
+ selection: false
622
+ });
623
+ });
624
+ fieldTypeDefinition = "{ __headers?: {[key: string]: string}; __retry?: boolean; __alias?: string; __args".concat(fieldsOnArgs.every(function(arg) {
625
+ return arg.isOptional;
626
+ }) ? "?" : "", ": { ").concat(fieldsOnArgs.map(function(arg) {
627
+ return arg.code;
628
+ }).join(", "), " }}").concat(fieldTypeDefinition ? " & ".concat(fieldTypeDefinition) : "");
629
+ }
630
+ var isOptional = defaultValue || selection || fieldTypeDefinition.startsWith("Maybe");
631
+ var rawType = fieldTypeDefinition || selection && "boolean";
632
+ var wrappedType = isOptional ? rawType.replace(/Maybe<(.+?)>/, "$1") : rawType;
633
+ return {
634
+ isOptional: isOptional,
635
+ code: "".concat(field.name).concat(isOptional ? "?:" : ":", " ").concat(wrappedType)
636
+ };
637
+ }
638
+ function getArgsType(endpoint) {
639
+ var fieldsOnArgs = endpoint.args.map(function(arg) {
640
+ return gqlFieldToTypescript(arg, {
641
+ defaultValue: arg.defaultValue,
642
+ isInput: true,
643
+ selection: false
644
+ });
645
+ });
646
+ var argsType = "{ ".concat(fieldsOnArgs.map(function(arg) {
647
+ return arg.code;
648
+ }).join(", "), " }");
649
+ var argsFullyOptional = fieldsOnArgs.every(function(arg) {
650
+ return arg.isOptional;
651
+ });
652
+ return {
653
+ alias: import_case.default.pascal("".concat(endpoint.name, "Args")),
654
+ type: argsType,
655
+ optional: argsFullyOptional
656
+ };
657
+ }
658
+ function gqlEndpointToCode(kind, endpoint, codeOutputType) {
659
+ var selectionType = gqlTypeToTypescript(endpoint.type, {
660
+ isInput: false,
661
+ selection: true
662
+ });
663
+ var argsType = endpoint.args && endpoint.args.length ? getArgsType(endpoint) : null;
664
+ var inputType = "{\n __headers?: {[key: string]: string};\n __retry?: boolean;\n __alias?: string;\n ".concat(argsType ? "__args".concat(argsType.optional ? "?" : "", ": ").concat(argsType.alias) : "", "\n }").concat(selectionType ? " & ".concat(selectionType) : "");
665
+ var outputType = gqlTypeToTypescript(endpoint.type, {
666
+ required: true
667
+ });
668
+ var wrappedOutputType = /^(string|number|boolean)$/.test(outputType) ? outputType : "DeepRequired<".concat(outputType, ">");
669
+ return codeOutputType === "ts" ? "".concat(endpoint.name, ": Endpoint<").concat(inputType, ", ").concat(wrappedOutputType, ", AllEnums>") : "".concat(endpoint.name, ": apiEndpoint('").concat(kind, "', '").concat(endpoint.name, "')");
670
+ }
671
+ function gqlSchemaToCode(gqlType, param) {
672
+ var _param_selection = param.selection, selection = _param_selection === void 0 ? false : _param_selection, outputType = param.outputType;
673
+ var rawKind = gqlType.kind || gqlType.type;
674
+ if (rawKind === "SCALAR") {
675
+ return outputType === "ts" ? "export declare type ".concat(gqlType.name, " = ").concat(/date/i.test(gqlType.name) ? "IDate" : "string") : "";
676
+ }
677
+ if (rawKind === "ENUM") return outputType === "ts" ? "\n export declare enum ".concat(gqlType.name, " {\n ").concat((0, import_orderBy.default)(gqlType.enumValues, "name").map(function(_) {
678
+ return "".concat(import_case.default.camel(_.name), " = '").concat(_.name, "'");
679
+ }).join(",\n "), "\n }") : "export const ".concat(gqlType.name, " = {").concat((0, import_orderBy.default)(gqlType.enumValues, "name").map(function(_) {
680
+ return "".concat(import_case.default.camel(_.name), ": '").concat(_.name, "'");
681
+ }).join(",\n "), "}");
682
+ var fields = gqlType.fields && gqlType.fields || gqlType.inputFields && gqlType.inputFields || [];
683
+ return outputType === "ts" ? "\n export interface ".concat(gqlType.name).concat(selection ? "Selection" : "", " {\n ").concat(fields.map(function(_) {
684
+ return gqlFieldToTypescript(_, {
685
+ isInput: gqlType.kind === "INPUT_OBJECT",
686
+ selection: selection
687
+ }).code;
688
+ }).join(",\n "), "\n }") : "";
689
+ }
690
+ function getGraphQLInputType(type) {
691
+ switch(type.kind){
692
+ case "NON_NULL":
693
+ return "".concat(getGraphQLInputType(type.ofType), "!");
694
+ case "SCALAR":
695
+ case "INPUT_OBJECT":
696
+ case "ENUM":
697
+ return type.name;
698
+ case "LIST":
699
+ return "[".concat(getGraphQLInputType(type.ofType), "]");
700
+ default:
701
+ return "";
702
+ }
703
+ }
704
+ function getGraphQLOutputType(type) {
705
+ switch(type.kind){
706
+ case "LIST":
707
+ return "".concat(getGraphQLOutputType(type.ofType), "[]");
708
+ case "NON_NULL":
709
+ return getGraphQLOutputType(type.ofType);
710
+ case "OBJECT":
711
+ return type.name;
712
+ default:
713
+ return "";
714
+ }
715
+ }
716
+ function getTypesTreeCode(types) {
717
+ var typesTree = {};
718
+ types.forEach(function(type) {
719
+ return type.fields.filter(function(_) {
720
+ return _.args && _.args.length;
721
+ }).forEach(function(_) {
722
+ return _.args.forEach(function(a) {
723
+ var inputType = getGraphQLInputType(a.type);
724
+ if (inputType) {
725
+ (0, import_set.default)(typesTree, "".concat(type.name, ".").concat(_.name, ".__args.").concat(a.name), inputType);
726
+ }
727
+ });
728
+ });
729
+ });
730
+ types.forEach(function(t) {
731
+ return t.fields.forEach(function(f) {
732
+ var outputType = getGraphQLOutputType(f.type);
733
+ if (outputType) {
734
+ (0, import_set.default)(typesTree, "".concat(t.name, ".").concat(f.name, ".__shape"), outputType);
735
+ }
736
+ });
737
+ });
738
+ return "\n const typesTree = {\n ".concat(Object.entries(typesTree).map(function(param) {
739
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
740
+ var entryCode = Object.entries(value).map(function(param) {
741
+ var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
742
+ var cleanShapeType = v.__shape && v.__shape.replace(/[\[\]!?]/g, "");
743
+ var fieldsCode = v.__shape && typesTree.hasOwnProperty(cleanShapeType) ? "__fields: typesTree.".concat(cleanShapeType, ",") : "";
744
+ var argsCode = v.__args ? "__args: {\n ".concat(Object.entries(v.__args).map(function(param) {
745
+ var _param = _sliced_to_array(param, 2), k2 = _param[0], v2 = _param[1];
746
+ return "".concat(k2, ": '").concat(v2, "'");
747
+ }).join(",\n"), "\n }") : "";
748
+ return fieldsCode || argsCode ? "get ".concat(k, "() {\n return {\n ").concat(fieldsCode, "\n ").concat(argsCode, "\n }\n }") : "".concat(k, ": {}");
749
+ }).filter(Boolean).join(",\n").trim();
750
+ return entryCode && "\n ".concat(key, ": { \n ").concat(entryCode, " \n }");
751
+ }).filter(Boolean).join(",\n"), "\n }\n ");
752
+ }
753
+ function generateClientCode(types, options) {
754
+ var _types_find, _types_find1;
755
+ var typesHash = (0, import_md5.default)("".concat(JSON.stringify(options), "__").concat(JSON.stringify(types)));
756
+ var clientCacheFileName = "gql-ts-client__client__".concat(typesHash, "__").concat(package_default.version, ".json");
757
+ var clientCacheFilePath = import_path.default.resolve(tempDir, clientCacheFileName);
758
+ if (!options.skipCache && fs.existsSync(clientCacheFilePath)) {
759
+ return JSON.parse(fs.readFileSync(clientCacheFilePath, {
760
+ encoding: "utf8"
761
+ }));
762
+ }
763
+ var queries = ((_types_find = types.find(function(it) {
764
+ return it.name === "Query";
765
+ })) === null || _types_find === void 0 ? void 0 : _types_find.fields) || [];
766
+ var mutations = ((_types_find1 = types.find(function(it) {
767
+ return it.name === "Mutation";
768
+ })) === null || _types_find1 === void 0 ? void 0 : _types_find1.fields) || [];
769
+ var enums = types.filter(function(it) {
770
+ return it.kind === "ENUM" && !it.name.startsWith("__");
771
+ });
772
+ var scalars = types.filter(function(it) {
773
+ return it.kind === "SCALAR" && !/decimal|int|float|string|long|boolean/i.test(it.name);
774
+ });
775
+ var objectTypes = types.filter(function(it) {
776
+ return [
777
+ "OBJECT",
778
+ "INPUT_OBJECT"
779
+ ].includes(it.kind) && !it.name.startsWith("__");
780
+ });
781
+ var forInputExtraction = types.filter(function(it) {
782
+ return !it.name.startsWith("__") && [
783
+ "OBJECT"
784
+ ].includes(it.kind);
785
+ });
786
+ var clientName = options.clientName || "client";
787
+ var jsCode = "\n // noinspection TypeScriptUnresolvedVariable, ES6UnusedImports, JSUnusedLocalSymbols\n import { getApiEndpointCreator } from '".concat(graphqlTsClientPath, "/endpoint'\n \n ").concat(options.formatGraphQL || options.verbose ? '\n import { format as formatCode } from "prettier/standalone"\n import parserGraphql from "prettier/parser-graphql"\n \n const formatGraphQL = (query) => formatCode(query, {parser: \'graphql\', plugins: [parserGraphql]})' : "\n const formatGraphQL = (query) => query", "\n \n // Enums\n ").concat(enums.map(function(it) {
788
+ return gqlSchemaToCode(it, {
789
+ selection: false,
790
+ outputType: "js"
791
+ });
792
+ }).join("\n"), "\n\n // Schema Resolution Tree\n ").concat(getTypesTreeCode(forInputExtraction), "\n\n let verbose = ").concat(Boolean(options.verbose), "\n let headers = {}\n let url = '").concat(options.endpoint, "'\n let retryConfig = {\n max: 0,\n before: undefined,\n waitBeforeRetry: 0\n }\n let responseListeners = []\n let errorsParser = ").concat(options.errorsParser, "\n // noinspection JSUnusedLocalSymbols\n let apiEndpoint = getApiEndpointCreator({\n getClient: () => ({ url, headers, retryConfig }),\n responseListeners,\n maxAge: 30000,\n verbose,\n typesTree,\n formatGraphQL,\n errorsParser\n })\n\n export const ").concat(clientName, " = {\n addResponseListener: (listener) => responseListeners.push(\n listener),\n setHeader: (key, value) => {\n headers[key] = value\n },\n setHeaders: (newHeaders) => {\n headers = newHeaders\n },\n setRetryConfig: (options) => {\n if (!Number.isInteger(options.max) || options.max < 0) {\n throw new Error('retryOptions.max should be a non-negative integer')\n }\n \n retryConfig = { \n max: options.max,\n waitBeforeRetry: options.waitBeforeRetry,\n before: options.before \n }\n },\n setUrl: (_url) => url = _url,\n queries: {\n ").concat(queries.map(function(query) {
793
+ return gqlEndpointToCode("query", query, "js");
794
+ }).join(",\n"), "\n },\n mutations: {\n ").concat(mutations.map(function(mutation) {
795
+ return gqlEndpointToCode("mutation", mutation, "js");
796
+ }).join(",\n"), "\n }\n }\n\n export default ").concat(clientName);
797
+ var typingsCode = "\n // noinspection TypeScriptUnresolvedVariable, ES6UnusedImports, JSUnusedLocalSymbols, TypeScriptCheckImport\n import { DeepRequired } from 'ts-essentials'\n import { Maybe, IResponseListener, Endpoint } from '".concat(graphqlTsClientPath, "'\n\n // Scalars\n export type IDate = string | Date\n ").concat(scalars.map(function(it) {
798
+ return gqlSchemaToCode(it, {
799
+ selection: false,
800
+ outputType: "ts"
801
+ });
802
+ }).join("\n"), "\n\n // Enums\n ").concat(enums.map(function(it) {
803
+ return gqlSchemaToCode(it, {
804
+ selection: false,
805
+ outputType: "ts"
806
+ });
807
+ }).join("\n"), "\n \n type AllEnums = ").concat(enums.length ? enums.map(function(it) {
808
+ return it.name;
809
+ }).join(" | ") : "never", "\n \n // Args\n ").concat(_to_consumable_array(queries).concat(_to_consumable_array(mutations)).map(function(query) {
810
+ var argsType = getArgsType(query);
811
+ return "export interface ".concat(argsType.alias, " ").concat(argsType.type);
812
+ }).join("\n"), "\n\n // Input/Output Types\n ").concat(objectTypes.map(function(it) {
813
+ return "\n /**\n * @deprecated Avoid directly using this interface. Instead, create a type alias based on the query/mutation return type.\n */\n ".concat(gqlSchemaToCode(it, {
814
+ selection: false,
815
+ outputType: "ts"
816
+ }));
817
+ }).join("\n"), "\n\n // Selection Types\n ").concat(objectTypes.filter(function(it) {
818
+ return it.name !== "Query";
819
+ }).map(function(it) {
820
+ return gqlSchemaToCode(it, {
821
+ selection: true,
822
+ outputType: "ts"
823
+ });
824
+ }).join("\n"), "\n \n export declare const ").concat(clientName, ": {\n addResponseListener: (listener: IResponseListener) => void\n setHeader: (key: string, value: string) => void\n setHeaders: (newHeaders: { [k: string]: string }) => void,\n setUrl: (url: string) => void,\n setRetryConfig: (options: { max: number, waitBeforeRetry?: number, before?: IResponseListener }) => void\n queries: {\n ").concat(queries.map(function(q) {
825
+ return gqlEndpointToCode("query", q, "ts");
826
+ }).join(",\n"), "\n },\n mutations: {\n ").concat(mutations.map(function(q) {
827
+ return gqlEndpointToCode("mutation", q, "ts");
828
+ }).join(",\n"), "\n }\n }\n\n export default ").concat(clientName);
829
+ var output = {
830
+ js: esbuild.transformSync(jsCode, {
831
+ format: "cjs",
832
+ loader: "js"
833
+ }).code,
834
+ typings: prettier.format(typingsCode, {
835
+ semi: false,
836
+ parser: "typescript"
837
+ })
838
+ };
839
+ fs.writeFileSync(clientCacheFilePath, JSON.stringify(output));
840
+ return output;
841
+ }
842
+ function fetchIntrospection(_) {
843
+ return _fetchIntrospection.apply(this, arguments);
844
+ }
845
+ function _fetchIntrospection() {
846
+ _fetchIntrospection = _async_to_generator(function(param) {
847
+ var endpoint, headers, introspectionCacheFileName, introspectionCacheFilePath, loadedFromCache, types, data;
848
+ return _ts_generator(this, function(_state) {
849
+ switch(_state.label){
850
+ case 0:
851
+ endpoint = param.endpoint, headers = param.headers;
852
+ introspectionCacheFileName = "gql-ts-client__introspection__".concat((0, import_lodash.kebabCase)(endpoint), ".json");
853
+ introspectionCacheFilePath = import_path.default.resolve(tempDir, introspectionCacheFileName);
854
+ loadedFromCache = false;
855
+ return [
856
+ 4,
857
+ import_axios.default.post(endpoint, {
858
+ query: (0, import_graphql.getIntrospectionQuery)()
859
+ }, {
860
+ headers: _object_spread({
861
+ "Content-Type": "application/json"
862
+ }, headers)
863
+ }).catch(function() {
864
+ var errorMessage = "The GraphQL introspection request failed (".concat(endpoint, ")");
865
+ if (fs.existsSync(introspectionCacheFilePath)) {
866
+ var cachedSchema = JSON.parse(fs.readFileSync(introspectionCacheFilePath, {
867
+ encoding: "utf8"
868
+ }));
869
+ loadedFromCache = true;
870
+ console.warn("Successfully restored from local cache.");
871
+ return {
872
+ data: cachedSchema
873
+ };
874
+ } else {
875
+ return Promise.reject(errorMessage);
876
+ }
877
+ })
878
+ ];
879
+ case 1:
880
+ data = _state.sent().data;
881
+ types = data.data.__schema.types;
882
+ if (!loadedFromCache) {
883
+ console.log("Successfully loaded GraphQL introspection from ".concat(endpoint));
884
+ fs.writeFileSync(introspectionCacheFilePath, JSON.stringify(data), {
885
+ encoding: "utf8"
886
+ });
887
+ }
888
+ return [
889
+ 2,
890
+ types
891
+ ];
892
+ }
893
+ });
894
+ });
895
+ return _fetchIntrospection.apply(this, arguments);
896
+ }
897
+ function generateTypescriptClient(_param) {
898
+ return _generateTypescriptClient.apply(this, arguments);
899
+ }
900
+ function _generateTypescriptClient() {
901
+ _generateTypescriptClient = _async_to_generator(function(_param) {
902
+ var introspectionEndpoint, output, options, types, _generateClientCode, js, typings, outputDir;
903
+ return _ts_generator(this, function(_state) {
904
+ switch(_state.label){
905
+ case 0:
906
+ introspectionEndpoint = _param.introspectionEndpoint, output = _param.output, options = _object_without_properties(_param, [
907
+ "introspectionEndpoint",
908
+ "output"
909
+ ]);
910
+ (0, import_axios_retry.default)(import_axios.default, {
911
+ retries: 5,
912
+ retryDelay: function(retryCount) {
913
+ return 1e3 * Math.pow(2, retryCount);
914
+ }
915
+ });
916
+ return [
917
+ 4,
918
+ fetchIntrospection(_object_spread_props(_object_spread({}, options), {
919
+ endpoint: introspectionEndpoint || options.endpoint
920
+ }))
921
+ ];
922
+ case 1:
923
+ types = _state.sent();
924
+ _generateClientCode = generateClientCode(types, options), js = _generateClientCode.js, typings = _generateClientCode.typings;
925
+ if (output && typeof output === "string") {
926
+ outputDir = import_path.default.dirname(output);
927
+ if (!fs.existsSync(outputDir)) {
928
+ fs.mkdirSync(outputDir, {
929
+ recursive: true
930
+ });
931
+ }
932
+ fs.writeFileSync(output.replace(/(\.(ts|js))?$/, ".d.ts"), typings, {
933
+ encoding: "utf8"
934
+ });
935
+ fs.writeFileSync(output.replace(/(\.(ts|js))?$/, ".js"), js, {
936
+ encoding: "utf8"
937
+ });
938
+ }
939
+ return [
940
+ 2,
941
+ {
942
+ js: js,
943
+ typings: typings
944
+ }
945
+ ];
946
+ }
947
+ });
948
+ });
949
+ return _generateTypescriptClient.apply(this, arguments);
950
+ }
951
+ // src/types.ts
952
+ var GraphQLClientError = /*#__PURE__*/ function(Error1) {
953
+ _inherits(_GraphQLClientError, Error1);
954
+ var _super = _create_super(_GraphQLClientError);
955
+ function _GraphQLClientError(responseData) {
956
+ _class_call_check(this, _GraphQLClientError);
957
+ var _this;
958
+ _this = _super.call(this);
959
+ _this.responseData = responseData;
960
+ Object.setPrototypeOf(_assert_this_initialized(_this), _GraphQLClientError.prototype);
961
+ return _this;
962
+ }
963
+ _create_class(_GraphQLClientError, [
964
+ {
965
+ key: "message",
966
+ get: function get() {
967
+ return this.response.errors.map(function(it) {
968
+ return it.message;
969
+ }).join(";\n");
970
+ }
971
+ },
972
+ {
973
+ key: "response",
974
+ get: function get() {
975
+ return this.responseData;
976
+ }
977
+ }
978
+ ]);
979
+ return _GraphQLClientError;
980
+ }(_wrap_native_super(Error));
981
+ // Annotate the CommonJS export names for ESM import in node:
982
+ 0 && (module.exports = {
983
+ GraphQLClientError: GraphQLClientError,
984
+ generateTypescriptClient: generateTypescriptClient
985
+ });