graphql-typed-client
Version:
A tool that generates a strongly typed client library for any GraphQL endpoint. The client allows writing GraphQL queries as plain JS objects (with type safety, awesome code completion experience, custom scalar type mapping, type guards and more)
95 lines • 4.97 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
require("isomorphic-fetch");
var graphql_1 = require("graphql");
var qs_1 = __importDefault(require("qs"));
exports.get = function (uri, query) {
return fetch(uri + "?" + qs_1.default.stringify(query)).then(function (r) { return r.json(); });
};
exports.post = function (uri, body) {
return fetch(uri, {
method: 'POST',
body: JSON.stringify(body),
headers: { 'Content-Type': 'application/json' },
}).then(function (r) { return r.json(); });
};
exports.fetchSchema = function (endpoint, usePost, options) {
if (usePost === void 0) { usePost = false; }
return __awaiter(void 0, void 0, void 0, function () {
var result, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!usePost) return [3 /*break*/, 2];
return [4 /*yield*/, exports.post(endpoint, { query: graphql_1.getIntrospectionQuery() })];
case 1:
_a = _b.sent();
return [3 /*break*/, 4];
case 2: return [4 /*yield*/, exports.get(endpoint, { query: graphql_1.getIntrospectionQuery() })];
case 3:
_a = _b.sent();
_b.label = 4;
case 4:
result = _a;
if (!result.data) {
throw new Error('introspection request did not receive a valid response');
}
return [2 /*return*/, graphql_1.buildClientSchema(result.data, options)];
}
});
});
};
exports.customFetchSchema = function (fetcher, options) { return __awaiter(void 0, void 0, void 0, function () {
var result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, fetcher(graphql_1.getIntrospectionQuery(), fetch, qs_1.default)];
case 1:
result = _a.sent();
if (!result.data) {
throw new Error('introspection request did not receive a valid response');
}
return [2 /*return*/, graphql_1.buildClientSchema(result.data, options)];
}
});
}); };
//# sourceMappingURL=fetchSchema.js.map