@push-rpc/next 2.0.22 → 2.0.23
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/client/HttpClient.js +5 -3
- package/dist/client/HttpClient.js.map +1 -1
- package/dist/server/RpcServerImpl.js +3 -1
- package/dist/server/RpcServerImpl.js.map +1 -1
- package/dist/server/http.js +1 -3
- package/dist/server/http.js.map +1 -1
- package/package.json +1 -1
- package/src/client/HttpClient.ts +8 -5
- package/src/server/RpcServerImpl.ts +4 -2
- package/src/server/http.ts +5 -4
- package/tests/calls.ts +91 -4
- package/tests/misc.ts +2 -2
|
@@ -36,13 +36,14 @@ class HttpClient {
|
|
|
36
36
|
signal,
|
|
37
37
|
});
|
|
38
38
|
finished();
|
|
39
|
-
|
|
39
|
+
const hasError = response.headers.has("x-error");
|
|
40
|
+
if (!hasError && response.status == 204) {
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
42
43
|
const contentType = response.headers.get("content-type");
|
|
43
44
|
const text = await response.text();
|
|
44
45
|
const res = contentType && contentType.includes("application/json") ? (0, json_js_1.safeParseJson)(text) : text;
|
|
45
|
-
if (response.status < 200 || response.status >= 300) {
|
|
46
|
+
if (hasError || response.status < 200 || response.status >= 300) {
|
|
46
47
|
const error = new Error(response.headers.get("x-error") ?? undefined);
|
|
47
48
|
Object.assign(error, { code: response.status });
|
|
48
49
|
if (typeof res == "object") {
|
|
@@ -55,8 +56,9 @@ class HttpClient {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
catch (e) {
|
|
59
|
+
e.remoteUrl = itemUrl;
|
|
58
60
|
if (e.message == "Error" || !e.message) {
|
|
59
|
-
e.message
|
|
61
|
+
delete e.message;
|
|
60
62
|
}
|
|
61
63
|
if (e.message == "fetch failed" && e.cause) {
|
|
62
64
|
e = e.cause;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../src/client/HttpClient.ts"],"names":[],"mappings":";;;AAAA,sCAAqD;AACrD,8CAA6D;AAE7D,MAAa,UAAU;IACrB,YACU,GAAW,EACX,QAAgB,EAChB,UAAiD;QAFjD,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAuC;
|
|
1
|
+
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../src/client/HttpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,9 @@ class RpcServerImpl {
|
|
|
50
50
|
return await this.invokeLocalFunction(connectionContext, itemName, item, parameters, rpc_js_1.InvocationType.Call);
|
|
51
51
|
}
|
|
52
52
|
catch (e) {
|
|
53
|
-
|
|
53
|
+
if (e.code != 200) {
|
|
54
|
+
logger_js_1.log.error(`Cannot call item ${itemName}.`, e);
|
|
55
|
+
}
|
|
54
56
|
throw e;
|
|
55
57
|
}
|
|
56
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcServerImpl.js","sourceRoot":"","sources":["../../src/server/RpcServerImpl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mEAA0D;AAC1D,gDAAuB;AAEvB,uCAA0C;AAC1C,sCAQkB;AAClB,4CAAgC;AAChC,0DAAsD;AACtD,yCAA6D;AAC7D,8CAA6D;AAE7D,MAAa,aAAa;IACxB,YACmB,QAAW,EACX,OAAkC;QADlC,aAAQ,GAAR,QAAQ,CAAG;QACX,YAAO,GAAP,OAAO,CAA2B;QA4FpC,uBAAkB,GAAG,IAAI,0CAAkB,EAAE,CAAA;QACtD,sBAAiB,GAA6B,IAAI,CAAA;QAGlD,SAAI,GAAG,KAAK,EAClB,iBAAuC,EACvC,QAAgB,EAChB,UAAqB,EACH,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;YAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,iBAAQ,CAAC,kBAAS,CAAC,QAAQ,EAAE,QAAQ,QAAQ,YAAY,CAAC,CAAA;YACtE,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,mBAAmB,CACnC,iBAAiB,EACjB,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,uBAAc,CAAC,IAAI,CACpB,CAAA;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"RpcServerImpl.js","sourceRoot":"","sources":["../../src/server/RpcServerImpl.ts"],"names":[],"mappings":"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"}
|
package/dist/server/http.js
CHANGED
|
@@ -51,9 +51,7 @@ async function serveHttpRequest(req, res, path, hooks, createConnectionContext)
|
|
|
51
51
|
catch (e) {
|
|
52
52
|
if (e.code && typeof e.code == "number" && e.code >= 100 && e.code < 600) {
|
|
53
53
|
res.statusCode = e.code;
|
|
54
|
-
|
|
55
|
-
res.setHeader("X-Error", e["message"]);
|
|
56
|
-
}
|
|
54
|
+
res.setHeader("X-Error", e["message"] ?? "");
|
|
57
55
|
const { code, message, stack, ...rest } = e;
|
|
58
56
|
if (Object.keys(rest).length > 0) {
|
|
59
57
|
res.setHeader("Content-Type", "application/json");
|
package/dist/server/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":";;;AAGA,8CAA6D;AAC7D,4CAAgC;AAChC,kDAAoD;AAE7C,KAAK,UAAU,gBAAgB,CACpC,GAAoB,EACpB,GAAmB,EACnB,IAAY,EACZ,KAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/client/HttpClient.ts
CHANGED
|
@@ -6,8 +6,7 @@ export class HttpClient {
|
|
|
6
6
|
private url: string,
|
|
7
7
|
private clientId: string,
|
|
8
8
|
private getHeaders: () => Promise<Record<string, string>>,
|
|
9
|
-
) {
|
|
10
|
-
}
|
|
9
|
+
) {}
|
|
11
10
|
|
|
12
11
|
async call(itemName: string, params: unknown[], callTimeout: number): Promise<unknown> {
|
|
13
12
|
return this.httpRequest("POST", itemName, params, callTimeout, await this.getHeaders())
|
|
@@ -50,7 +49,9 @@ export class HttpClient {
|
|
|
50
49
|
|
|
51
50
|
finished()
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
const hasError = response.headers.has("x-error")
|
|
53
|
+
|
|
54
|
+
if (!hasError && response.status == 204) {
|
|
54
55
|
return
|
|
55
56
|
}
|
|
56
57
|
|
|
@@ -61,7 +62,7 @@ export class HttpClient {
|
|
|
61
62
|
const res =
|
|
62
63
|
contentType && contentType.includes("application/json") ? safeParseJson(text) : text
|
|
63
64
|
|
|
64
|
-
if (response.status < 200 || response.status >= 300) {
|
|
65
|
+
if (hasError || response.status < 200 || response.status >= 300) {
|
|
65
66
|
const error = new Error(response.headers.get("x-error") ?? undefined)
|
|
66
67
|
|
|
67
68
|
Object.assign(error, {code: response.status})
|
|
@@ -75,8 +76,10 @@ export class HttpClient {
|
|
|
75
76
|
return res
|
|
76
77
|
}
|
|
77
78
|
} catch (e: any) {
|
|
79
|
+
e.remoteUrl = itemUrl
|
|
80
|
+
|
|
78
81
|
if (e.message == "Error" || !e.message) {
|
|
79
|
-
e.message
|
|
82
|
+
delete e.message
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
if (e.message == "fetch failed" && e.cause) {
|
|
@@ -135,8 +135,10 @@ export class RpcServerImpl<S extends Services<S>, C extends RpcContext> implemen
|
|
|
135
135
|
parameters,
|
|
136
136
|
InvocationType.Call,
|
|
137
137
|
)
|
|
138
|
-
} catch (e) {
|
|
139
|
-
|
|
138
|
+
} catch (e: any) {
|
|
139
|
+
if (e.code != 200) {
|
|
140
|
+
log.error(`Cannot call item ${itemName}.`, e)
|
|
141
|
+
}
|
|
140
142
|
throw e
|
|
141
143
|
}
|
|
142
144
|
}
|
package/src/server/http.ts
CHANGED
|
@@ -10,7 +10,10 @@ export async function serveHttpRequest(
|
|
|
10
10
|
res: ServerResponse,
|
|
11
11
|
path: string,
|
|
12
12
|
hooks: HttpServerHooks,
|
|
13
|
-
createConnectionContext: (
|
|
13
|
+
createConnectionContext: (
|
|
14
|
+
req: IncomingMessage,
|
|
15
|
+
res: ServerResponse,
|
|
16
|
+
) => Promise<RpcConnectionContext>,
|
|
14
17
|
) {
|
|
15
18
|
// if port is in options - response 404 on other URLs
|
|
16
19
|
// oherwise just handle request
|
|
@@ -66,9 +69,7 @@ export async function serveHttpRequest(
|
|
|
66
69
|
if (e.code && typeof e.code == "number" && e.code >= 100 && e.code < 600) {
|
|
67
70
|
res.statusCode = e.code
|
|
68
71
|
|
|
69
|
-
|
|
70
|
-
res.setHeader("X-Error", e["message"])
|
|
71
|
-
}
|
|
72
|
+
res.setHeader("X-Error", e["message"] ?? "")
|
|
72
73
|
const {code, message, stack, ...rest} = e
|
|
73
74
|
if (Object.keys(rest).length > 0) {
|
|
74
75
|
res.setHeader("Content-Type", "application/json")
|
package/tests/calls.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {assert} from "chai"
|
|
2
|
-
import {createTestClient, startTestServer} from "./testUtils.js"
|
|
3
|
-
import {CallOptions, RpcErrors} from "../src/index.js"
|
|
2
|
+
import {createTestClient, startTestServer, TEST_PORT} from "./testUtils.js"
|
|
3
|
+
import {CallOptions, RpcError, RpcErrors} from "../src/index.js"
|
|
4
4
|
import {adelay} from "../src/utils/promises.js"
|
|
5
5
|
|
|
6
6
|
describe("calls", () => {
|
|
@@ -29,7 +29,7 @@ describe("calls", () => {
|
|
|
29
29
|
assert.deepEqual(r, resp)
|
|
30
30
|
})
|
|
31
31
|
|
|
32
|
-
it("error", async () => {
|
|
32
|
+
it("error transferred", async () => {
|
|
33
33
|
const message = "bla"
|
|
34
34
|
|
|
35
35
|
const services = await startTestServer({
|
|
@@ -46,11 +46,98 @@ describe("calls", () => {
|
|
|
46
46
|
await client.test.getSomething()
|
|
47
47
|
assert.fail()
|
|
48
48
|
} catch (e: any) {
|
|
49
|
-
console.log(e)
|
|
50
49
|
assert.equal(e.message, message)
|
|
51
50
|
}
|
|
52
51
|
})
|
|
53
52
|
|
|
53
|
+
it("error with extra fields and status", async () => {
|
|
54
|
+
const services = await startTestServer({
|
|
55
|
+
test: {
|
|
56
|
+
async getSomething() {
|
|
57
|
+
const error: any = new RpcError(401, "Forbidden")
|
|
58
|
+
error["extra"] = "yes"
|
|
59
|
+
throw error
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
const client = await createTestClient<typeof services>()
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
await client.test.getSomething()
|
|
68
|
+
assert.fail()
|
|
69
|
+
} catch (e: any) {
|
|
70
|
+
assert.equal(e.message, "Forbidden")
|
|
71
|
+
assert.equal(e.code, 401)
|
|
72
|
+
assert.equal(e.extra, "yes")
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// validate HTTP status
|
|
76
|
+
const response = await fetch(`http://127.0.0.1:${TEST_PORT}/rpc/test/getSomething`, {
|
|
77
|
+
method: "POST",
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
assert.equal(response.status, 401)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
it("error with 200 status", async () => {
|
|
84
|
+
const services = await startTestServer({
|
|
85
|
+
test: {
|
|
86
|
+
async getSomething() {
|
|
87
|
+
// also, should not be logged
|
|
88
|
+
throw new RpcError(200, "Wrong!")
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
const client = await createTestClient<typeof services>()
|
|
94
|
+
|
|
95
|
+
try {
|
|
96
|
+
await client.test.getSomething()
|
|
97
|
+
assert.fail("Expecting to fail")
|
|
98
|
+
} catch (e: any) {
|
|
99
|
+
assert.equal(e.message, "Wrong!")
|
|
100
|
+
assert.equal(e.code, 200)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// validate HTTP status
|
|
104
|
+
const response = await fetch(`http://127.0.0.1:${TEST_PORT}/rpc/test/getSomething`, {
|
|
105
|
+
method: "POST",
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
assert.equal(response.status, 200)
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
it("error with 200 status and empty message", async () => {
|
|
112
|
+
const services = await startTestServer({
|
|
113
|
+
test: {
|
|
114
|
+
async getSomething() {
|
|
115
|
+
const error: any = new RpcError(200)
|
|
116
|
+
error["extra"] = "yes"
|
|
117
|
+
throw error
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
const client = await createTestClient<typeof services>()
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
await client.test.getSomething()
|
|
126
|
+
assert.fail()
|
|
127
|
+
} catch (e: any) {
|
|
128
|
+
assert.isNotOk(e.message)
|
|
129
|
+
assert.equal(e.code, 200)
|
|
130
|
+
assert.equal(e.extra, "yes")
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// validate HTTP status
|
|
134
|
+
const response = await fetch(`http://127.0.0.1:${TEST_PORT}/rpc/test/getSomething`, {
|
|
135
|
+
method: "POST",
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
assert.equal(response.status, 200)
|
|
139
|
+
})
|
|
140
|
+
|
|
54
141
|
it("timeout", async () => {
|
|
55
142
|
const callTimeout = 200
|
|
56
143
|
|
package/tests/misc.ts
CHANGED
|
@@ -217,14 +217,14 @@ describe("Misc", () => {
|
|
|
217
217
|
},
|
|
218
218
|
{
|
|
219
219
|
async createConnectionContext(
|
|
220
|
-
req: IncomingMessage
|
|
220
|
+
req: IncomingMessage,
|
|
221
221
|
): Promise<RpcConnectionContext & {userName: string}> {
|
|
222
222
|
return {
|
|
223
223
|
clientId: "test",
|
|
224
224
|
userName: req.headers["x-user-name"] as string,
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
|
-
}
|
|
227
|
+
},
|
|
228
228
|
)
|
|
229
229
|
|
|
230
230
|
const remote = await createTestClient<typeof services>({
|