Skip to content
This repository was archived by the owner on Sep 5, 2025. It is now read-only.

Commit e53d999

Browse files
author
Paul Korzhyk
committed
Import isomorphic fetch differently (better?)
Make tslint test happier Prettier clientStub
1 parent 5749670 commit e53d999

File tree

6 files changed

+283
-171
lines changed

6 files changed

+283
-171
lines changed

lib/clientStub.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import "isomorphic-fetch";
21
import { Assigned, Mutation, Operation, Payload, Request, Response, TxnContext, UiKeywords } from "./types";
32
export declare class DgraphClientStub {
43
private readonly addr;

lib/clientStub.js

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
3636
}
3737
};
3838
Object.defineProperty(exports, "__esModule", { value: true });
39-
require("isomorphic-fetch");
39+
var fetch = require("isomorphic-fetch");
4040
var jwt = require("jsonwebtoken");
4141
var errors_1 = require("./errors");
4242
var AUTO_REFRESH_PREFETCH_TIME = 5000;
@@ -59,6 +59,9 @@ var DgraphClientStub = (function () {
5959
case 1:
6060
health = _a.sent();
6161
version = health["version"] || health[0].version;
62+
if (version === undefined) {
63+
version = "1.0.x";
64+
}
6265
this.legacyApi = version.startsWith("1.0.");
6366
return [2, version];
6467
}
@@ -144,10 +147,12 @@ var DgraphClientStub = (function () {
144147
}
145148
if (params.length > 0) {
146149
url += "?";
147-
url += params.map(function (_a) {
150+
url += params
151+
.map(function (_a) {
148152
var key = _a.key, value = _a.value;
149153
return key + "=" + value;
150-
}).join("&");
154+
})
155+
.join("&");
151156
}
152157
}
153158
return this.callAPI(url, {
@@ -170,8 +175,13 @@ var DgraphClientStub = (function () {
170175
}
171176
body = JSON.stringify(obj);
172177
}
173-
else if (mu.setNquads !== undefined || mu.deleteNquads !== undefined) {
174-
body = "{\n " + (mu.setNquads === undefined ? "" : "set {\n " + mu.setNquads + "\n }") + "\n " + (mu.deleteNquads === undefined ? "" : "delete {\n " + mu.deleteNquads + "\n }") + "\n }";
178+
else if (mu.setNquads !== undefined ||
179+
mu.deleteNquads !== undefined) {
180+
body = "{\n " + (mu.setNquads === undefined
181+
? ""
182+
: "set {\n " + mu.setNquads + "\n }") + "\n " + (mu.deleteNquads === undefined
183+
? ""
184+
: "delete {\n " + mu.deleteNquads + "\n }") + "\n }";
175185
}
176186
else if (mu.mutation !== undefined) {
177187
body = mu.mutation;
@@ -200,7 +210,8 @@ var DgraphClientStub = (function () {
200210
var url = "mutate";
201211
var nextDelim = "?";
202212
if (mu.startTs > 0) {
203-
url += (!this.legacyApi ? "?startTs=" : "/") + mu.startTs.toString();
213+
url +=
214+
(!this.legacyApi ? "?startTs=" : "/") + mu.startTs.toString();
204215
nextDelim = "&";
205216
}
206217
if (mu.commitNow) {
@@ -249,11 +260,14 @@ var DgraphClientStub = (function () {
249260
throw new Error("Pre v1.1 clients do not support Login methods");
250261
}
251262
body = {};
252-
if (userid === undefined && refreshToken === undefined && this.refreshToken === undefined) {
263+
if (userid === undefined &&
264+
refreshToken === undefined &&
265+
this.refreshToken === undefined) {
253266
throw new Error("Cannot find login details: neither userid/password nor refresh token are specified");
254267
}
255268
if (userid === undefined) {
256-
body.refresh_token = refreshToken !== undefined ? refreshToken : this.refreshToken;
269+
body.refresh_token =
270+
refreshToken !== undefined ? refreshToken : this.refreshToken;
257271
}
258272
else {
259273
body.userid = userid;
@@ -294,7 +308,9 @@ var DgraphClientStub = (function () {
294308
if (all === void 0) { all = false; }
295309
return __awaiter(this, void 0, void 0, function () {
296310
return __generator(this, function (_a) {
297-
return [2, this.callAPI("health" + (all ? "?all" : ""), {})];
311+
return [2, this.callAPI("health" + (all ? "?all" : ""), {
312+
acceptRawText: true,
313+
})];
298314
});
299315
});
300316
};
@@ -324,13 +340,14 @@ var DgraphClientStub = (function () {
324340
return;
325341
}
326342
this.cancelRefreshTimer();
327-
var timeToWait = Math.max(2000, jwt.decode(accessToken).exp * 1000 - Date.now()
328-
- AUTO_REFRESH_PREFETCH_TIME);
329-
this.autoRefreshTimer = setTimeout(function () { return _this.refreshToken !== undefined ? _this.login() : 0; }, timeToWait);
343+
var timeToWait = Math.max(2000, jwt.decode(accessToken).exp * 1000 -
344+
Date.now() -
345+
AUTO_REFRESH_PREFETCH_TIME);
346+
this.autoRefreshTimer = (setTimeout(function () { return (_this.refreshToken !== undefined ? _this.login() : 0); }, timeToWait));
330347
};
331348
DgraphClientStub.prototype.callAPI = function (path, config) {
332349
return __awaiter(this, void 0, void 0, function () {
333-
var url, response, json, errors;
350+
var url, response, json, responseText, err, errors;
334351
return __generator(this, function (_a) {
335352
switch (_a.label) {
336353
case 0:
@@ -345,9 +362,20 @@ var DgraphClientStub = (function () {
345362
if (response.status >= 300 || response.status < 200) {
346363
throw new Error("Invalid status code = " + response.status);
347364
}
348-
return [4, response.json()];
365+
return [4, response.text()];
349366
case 2:
350-
json = _a.sent();
367+
responseText = _a.sent();
368+
try {
369+
json = JSON.parse(responseText);
370+
}
371+
catch (e) {
372+
if (config.acceptRawText) {
373+
return [2, responseText];
374+
}
375+
err = (new Error("Response is not JSON"));
376+
err.responseText = responseText;
377+
throw err;
378+
}
351379
errors = json.errors;
352380
if (errors !== undefined) {
353381
throw new errors_1.APIError(url, errors);

lib/types.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export interface Response {
2323
}
2424
export interface UiKeywords {
2525
keywords: {
26-
"type": string;
26+
type: string;
2727
name: string;
2828
}[];
2929
}
@@ -73,3 +73,6 @@ export interface TxnOptions {
7373
readOnly?: boolean;
7474
bestEffort?: boolean;
7575
}
76+
export interface ErrorNonJson extends Error {
77+
responseText?: string;
78+
}

package.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dgraph-js-http",
3-
"version": "20.03.0",
3+
"version": "20.3.1-rc5",
44
"description": "A javascript HTTP client for Dgraph",
55
"license": "Apache-2.0",
66
"repository": {
@@ -42,5 +42,18 @@
4242
"dependencies": {
4343
"isomorphic-fetch": "^2.2.1",
4444
"jsonwebtoken": "^8.5.1"
45+
},
46+
"prettier": {
47+
"arrowParens": "avoid",
48+
"tabWidth": 4,
49+
"trailingComma": "all",
50+
"overrides": [
51+
{
52+
"files": "*.{json,yml}",
53+
"options": {
54+
"tabWidth": 2
55+
}
56+
}
57+
]
4558
}
4659
}

0 commit comments

Comments
 (0)