@loke/http-rpc 5.0.2 → 5.1.0-beta.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.d.ts +11 -5
- package/dist/index.js +61 -58
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +19 -0
- package/dist/schema.js +71 -0
- package/dist/schema.js.map +1 -0
- package/dist/test/errors.js +17 -17
- package/dist/test/errors.js.map +1 -1
- package/dist/test/express.js +24 -24
- package/dist/test/express.js.map +1 -1
- package/dist/test/schema.d.ts +1 -0
- package/dist/test/schema.js +120 -0
- package/dist/test/schema.js.map +1 -0
- package/package.json +9 -6
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RequestHandler, ErrorRequestHandler } from "express";
|
|
2
|
+
import { JTDSchemaType } from "ajv/dist/jtd";
|
|
2
3
|
declare class ExtendableError extends Error {
|
|
3
4
|
constructor(message: string);
|
|
4
5
|
}
|
|
@@ -12,22 +13,27 @@ export declare class RpcError extends ExtendableError {
|
|
|
12
13
|
constructor(serviceName: string, methodName: string, inner: Error);
|
|
13
14
|
}
|
|
14
15
|
export declare type Method<A = any, R = any> = (args: A) => R;
|
|
15
|
-
export interface MethodDetails
|
|
16
|
-
methodName:
|
|
16
|
+
export interface MethodDetails {
|
|
17
|
+
methodName: string;
|
|
17
18
|
methodTimeout?: number;
|
|
18
19
|
help?: string;
|
|
19
20
|
paramNames?: string[];
|
|
21
|
+
requestTypeDef?: JTDSchemaType<any, any>;
|
|
22
|
+
responseTypeDef?: JTDSchemaType<any, any>;
|
|
20
23
|
}
|
|
21
|
-
export interface ServiceDetails<S> {
|
|
22
|
-
expose: MethodDetails
|
|
24
|
+
export interface ServiceDetails<S, Def extends Record<string, unknown> = Record<string, never>> {
|
|
25
|
+
expose: MethodDetails[];
|
|
23
26
|
service: string;
|
|
24
27
|
help?: string;
|
|
25
28
|
path?: string;
|
|
29
|
+
definitions?: {
|
|
30
|
+
[K in keyof Def]: JTDSchemaType<Def[K], Def>;
|
|
31
|
+
};
|
|
26
32
|
}
|
|
27
33
|
export interface Service {
|
|
28
34
|
[methodName: string]: Method;
|
|
29
35
|
}
|
|
30
|
-
interface ServiceSet<S extends Service> {
|
|
36
|
+
export interface ServiceSet<S extends Service> {
|
|
31
37
|
implementation: S;
|
|
32
38
|
meta: ServiceDetails<S>;
|
|
33
39
|
}
|
package/dist/index.js
CHANGED
|
@@ -39,91 +39,94 @@ class RpcError extends ExtendableError {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
exports.RpcError = RpcError;
|
|
42
|
-
function hasMethod(serviceDetails, methodName) {
|
|
43
|
-
return serviceDetails.expose.map((m) => m.methodName).includes(methodName);
|
|
44
|
-
}
|
|
45
42
|
function getExposedMeta(serviceDetails) {
|
|
46
43
|
return {
|
|
47
44
|
serviceName: serviceDetails.service,
|
|
48
45
|
multiArg: false,
|
|
49
46
|
help: serviceDetails.help || serviceDetails.service + " service",
|
|
47
|
+
definitions: serviceDetails.definitions,
|
|
50
48
|
interfaces: serviceDetails.expose.map((method) => {
|
|
51
49
|
if (typeof method === "string") {
|
|
52
50
|
throw new Error("Schema for expose has changed. Please refer to @loke/http-rpc documentation.");
|
|
53
51
|
}
|
|
54
|
-
const { methodName, methodTimeout = 60000, help, paramNames = [], } = method;
|
|
52
|
+
const { methodName, methodTimeout = 60000, help, paramNames = [], requestTypeDef, responseTypeDef, } = method;
|
|
55
53
|
return {
|
|
56
54
|
methodName,
|
|
57
55
|
paramNames,
|
|
58
56
|
methodTimeout,
|
|
59
57
|
help: help || methodName + " method",
|
|
58
|
+
requestTypeDef,
|
|
59
|
+
responseTypeDef,
|
|
60
60
|
};
|
|
61
61
|
}),
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
|
-
function parsePath(path, legacy) {
|
|
65
|
-
const pathParts = path.split("/");
|
|
66
|
-
// Legacy mode still supports the new /service-name/methodName format
|
|
67
|
-
// If length is 2 we assume it is the old /methodName format
|
|
68
|
-
if (legacy && pathParts.length === 2) {
|
|
69
|
-
const [, methodName] = path.split("/");
|
|
70
|
-
return { methodName };
|
|
71
|
-
}
|
|
72
|
-
const [, serviceName, methodName] = path.split("/");
|
|
73
|
-
return { serviceName, methodName };
|
|
74
|
-
}
|
|
75
|
-
// TODO: can't seem to get out of using any here because the type is an array
|
|
76
64
|
function createRequestHandler(services, options) {
|
|
77
|
-
const serviceMap = services.reduce((obj, service) => {
|
|
78
|
-
obj[service.meta.service] = service;
|
|
79
|
-
return obj;
|
|
80
|
-
}, {});
|
|
81
65
|
const { legacy = false } = options || {};
|
|
82
66
|
if (legacy && services.length !== 1) {
|
|
83
67
|
throw new Error("Only 1 service is supported in legacy mode");
|
|
84
68
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
69
|
+
const postHandlers = new Map();
|
|
70
|
+
const getHandlers = new Map();
|
|
71
|
+
const meta = {
|
|
72
|
+
services: Object.values(services.map((s) => getExposedMeta(s.meta))),
|
|
73
|
+
};
|
|
74
|
+
getHandlers.set("/", (req, res) => {
|
|
75
|
+
res.json(meta);
|
|
76
|
+
});
|
|
77
|
+
for (const service of services) {
|
|
78
|
+
const serviceName = service.meta.service;
|
|
79
|
+
const serviceMeta = meta.services.find((s) => s.serviceName === serviceName);
|
|
80
|
+
getHandlers.set(`/${serviceName}`, (req, res) => {
|
|
81
|
+
res.json(serviceMeta);
|
|
82
|
+
});
|
|
83
|
+
for (const methodDef of service.meta.expose) {
|
|
84
|
+
const { methodName } = methodDef;
|
|
85
|
+
const methodMeta = serviceMeta === null || serviceMeta === void 0 ? void 0 : serviceMeta.interfaces.find((s) => s.methodName === methodName);
|
|
86
|
+
const getHandler = (req, res) => {
|
|
87
|
+
res.json(methodMeta);
|
|
88
|
+
};
|
|
89
|
+
getHandlers.set(`/${serviceName}/${methodName}`, getHandler);
|
|
90
|
+
if (legacy) {
|
|
91
|
+
getHandlers.set(`/${methodName}`, getHandler);
|
|
92
|
+
}
|
|
93
|
+
const requestMeta = { handler: `${serviceName}.${methodName}` };
|
|
94
|
+
const methodFn = service.implementation[methodName].bind(service.implementation);
|
|
95
|
+
const postHandler = async (req, res, next) => {
|
|
96
|
+
const end = requestDuration.startTimer(requestMeta);
|
|
97
|
+
try {
|
|
98
|
+
requestCount.inc(requestMeta);
|
|
99
|
+
const result = await methodFn(req.body);
|
|
100
|
+
res.json(result);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
failureCount.inc(Object.assign({ type: err.type }, requestMeta));
|
|
104
|
+
next(new RpcError(serviceName, methodName, err));
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
end();
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
postHandlers.set(`/${serviceName}/${methodName}`, postHandler);
|
|
111
|
+
if (legacy) {
|
|
112
|
+
postHandlers.set(`/${methodName}`, postHandler);
|
|
113
|
+
}
|
|
106
114
|
}
|
|
107
|
-
|
|
108
|
-
|
|
115
|
+
}
|
|
116
|
+
return async (req, res, next) => {
|
|
117
|
+
let handler;
|
|
118
|
+
switch (req.method) {
|
|
119
|
+
case "GET":
|
|
120
|
+
handler = getHandlers.get(req.path);
|
|
121
|
+
break;
|
|
122
|
+
case "POST":
|
|
123
|
+
handler = postHandlers.get(req.path);
|
|
124
|
+
break;
|
|
109
125
|
}
|
|
110
|
-
if (
|
|
126
|
+
if (!handler) {
|
|
111
127
|
return next();
|
|
112
128
|
}
|
|
113
|
-
|
|
114
|
-
const end = requestDuration.startTimer(requestMeta);
|
|
115
|
-
try {
|
|
116
|
-
requestCount.inc(requestMeta);
|
|
117
|
-
const result = await service.implementation[methodName].call(service.implementation, req.body);
|
|
118
|
-
res.json(result);
|
|
119
|
-
}
|
|
120
|
-
catch (err) {
|
|
121
|
-
failureCount.inc(Object.assign({ type: err.type }, requestMeta));
|
|
122
|
-
next(new RpcError(serviceName, methodName, err));
|
|
123
|
-
}
|
|
124
|
-
finally {
|
|
125
|
-
end();
|
|
126
|
-
}
|
|
129
|
+
handler(req, res, next);
|
|
127
130
|
};
|
|
128
131
|
}
|
|
129
132
|
exports.createRequestHandler = createRequestHandler;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,6CAAiD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { JTDSchemaType } from "ajv/dist/jtd";
|
|
2
|
+
import { ServiceSet, Service } from ".";
|
|
3
|
+
export interface MethodDetails<Req, Res, Def extends Record<string, unknown> = Record<string, never>> {
|
|
4
|
+
methodTimeout?: number;
|
|
5
|
+
help?: string;
|
|
6
|
+
requestTypeDef?: JTDSchemaType<Req, Def>;
|
|
7
|
+
responseTypeDef?: JTDSchemaType<Res, Def>;
|
|
8
|
+
}
|
|
9
|
+
declare type Methods<S extends Service, Def extends Record<string, unknown> = Record<string, never>> = {
|
|
10
|
+
[K in keyof S]?: MethodDetails<Parameters<S[K]>[0], Awaited<ReturnType<S[K]>>, Def>;
|
|
11
|
+
};
|
|
12
|
+
export declare function serviceWithSchema<S extends Service, Def extends Record<string, unknown> = Record<string, never>>(service: S, serviceMeta: {
|
|
13
|
+
name: string;
|
|
14
|
+
definitions?: {
|
|
15
|
+
[K in keyof Def]: JTDSchemaType<Def[K], Def>;
|
|
16
|
+
};
|
|
17
|
+
methods: Methods<S, Def>;
|
|
18
|
+
}): ServiceSet<Service>;
|
|
19
|
+
export {};
|
package/dist/schema.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.serviceWithSchema = void 0;
|
|
7
|
+
const jtd_1 = __importDefault(require("ajv/dist/jtd"));
|
|
8
|
+
class ValidationError extends Error {
|
|
9
|
+
constructor(message, params) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.code = "validation";
|
|
12
|
+
this.type = "https://errors.loke.global/@loke/http-rpc/validation";
|
|
13
|
+
Object.defineProperty(this, "message", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
value: message,
|
|
16
|
+
});
|
|
17
|
+
Object.assign(this, params);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function serviceWithSchema(service, serviceMeta) {
|
|
21
|
+
const ajv = new jtd_1.default();
|
|
22
|
+
const implementation = {};
|
|
23
|
+
const serviceDetails = {
|
|
24
|
+
service: serviceMeta.name,
|
|
25
|
+
expose: [],
|
|
26
|
+
};
|
|
27
|
+
for (const [methodName, methodMeta] of Object.entries(serviceMeta.methods)) {
|
|
28
|
+
const requestSchema = ajv.compile(Object.assign({ definitions: serviceMeta === null || serviceMeta === void 0 ? void 0 : serviceMeta.definitions }, methodMeta === null || methodMeta === void 0 ? void 0 : methodMeta.requestTypeDef));
|
|
29
|
+
const responseSchema = ajv.compile(Object.assign({ definitions: serviceMeta === null || serviceMeta === void 0 ? void 0 : serviceMeta.definitions }, methodMeta === null || methodMeta === void 0 ? void 0 : methodMeta.responseTypeDef));
|
|
30
|
+
serviceDetails.expose.push({
|
|
31
|
+
methodName,
|
|
32
|
+
methodTimeout: methodMeta.methodTimeout,
|
|
33
|
+
help: methodMeta.help,
|
|
34
|
+
requestTypeDef: methodMeta.requestTypeDef,
|
|
35
|
+
responseTypeDef: methodMeta.responseTypeDef,
|
|
36
|
+
});
|
|
37
|
+
const endpoint = service[methodName].bind(service);
|
|
38
|
+
implementation[methodName] = async (args) => {
|
|
39
|
+
if (!requestSchema(args)) {
|
|
40
|
+
const errors = requestSchema.errors;
|
|
41
|
+
let msg = "request schema validation error";
|
|
42
|
+
const params = {};
|
|
43
|
+
if (Array.isArray(errors)) {
|
|
44
|
+
const err = errors[0];
|
|
45
|
+
if (err) {
|
|
46
|
+
params.instancePath = err.instancePath;
|
|
47
|
+
params.schemaPath = err.schemaPath;
|
|
48
|
+
msg =
|
|
49
|
+
(err.instancePath
|
|
50
|
+
? err.instancePath.slice(1).replace(/\//g, ".") + " "
|
|
51
|
+
: "") + err.message;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
throw new ValidationError(msg, params);
|
|
55
|
+
}
|
|
56
|
+
const result = await endpoint(args);
|
|
57
|
+
if (!responseSchema(result)) {
|
|
58
|
+
const errors = responseSchema.errors;
|
|
59
|
+
console.log("result errors", errors);
|
|
60
|
+
throw new Error("invalid response");
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
implementation,
|
|
67
|
+
meta: serviceDetails,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
exports.serviceWithSchema = serviceWithSchema;
|
|
71
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAkD;AAQlD,MAAM,eAAgB,SAAQ,KAAK;IAMjC,YAAY,OAAe,EAAE,MAA6B;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,sDAAsD,CAAC;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;YACrC,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AAwBD,SAAgB,iBAAiB,CAI/B,OAAU,EACV,WAMC;IAED,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAC;IAEtB,MAAM,cAAc,GAEhB,EAAE,CAAC;IAEP,MAAM,cAAc,GAA4B;QAC9C,OAAO,EAAE,WAAW,CAAC,IAAI;QACzB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1E,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,iBAC/B,WAAW,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,IAClC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,cAAc,EAC7B,CAAC;QAEH,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,iBAChC,WAAW,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,IAClC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,eAAe,EAC9B,CAAC;QAEH,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;YACzB,UAAU;YACV,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,eAAe,EAAE,UAAU,CAAC,eAAe;SAC5C,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBACxB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;gBACpC,IAAI,GAAG,GAAG,iCAAiC,CAAC;gBAE5C,MAAM,MAAM,GAA0B,EAAE,CAAC;gBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACzB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,GAAG,EAAE;wBACP,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;wBACvC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;wBACnC,GAAG;4BACD,CAAC,GAAG,CAAC,YAAY;gCACf,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG;gCACrD,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;qBACzB;iBACF;gBAED,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aACxC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC3B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACrC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;KACH;IAED,OAAO;QACL,cAAc;QACd,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC;AAlFD,8CAkFC"}
|
package/dist/test/errors.js
CHANGED
|
@@ -24,8 +24,8 @@ function createServerAddress(app) {
|
|
|
24
24
|
}
|
|
25
25
|
return `http://localhost:${address.port}`;
|
|
26
26
|
}
|
|
27
|
-
ava_1.default("passes through messages", async (t) => {
|
|
28
|
-
const app = express_1.default();
|
|
27
|
+
(0, ava_1.default)("passes through messages", async (t) => {
|
|
28
|
+
const app = (0, express_1.default)();
|
|
29
29
|
const implementation = {
|
|
30
30
|
basicError: () => {
|
|
31
31
|
throw new Error("This is a basic error");
|
|
@@ -35,7 +35,7 @@ ava_1.default("passes through messages", async (t) => {
|
|
|
35
35
|
expose: [{ methodName: "basicError" }],
|
|
36
36
|
service: "hello-service",
|
|
37
37
|
};
|
|
38
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }), __1.createErrorHandler());
|
|
38
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }), (0, __1.createErrorHandler)());
|
|
39
39
|
const serverAddress = createServerAddress(app);
|
|
40
40
|
const err = await t.throwsAsync(() => got_1.default.post(`${serverAddress}/rpc/basicError`, {
|
|
41
41
|
json: {},
|
|
@@ -45,8 +45,8 @@ ava_1.default("passes through messages", async (t) => {
|
|
|
45
45
|
message: "This is a basic error",
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
|
-
ava_1.default("passes through codes if available and makes them exposed", async (t) => {
|
|
49
|
-
const app = express_1.default();
|
|
48
|
+
(0, ava_1.default)("passes through codes if available and makes them exposed", async (t) => {
|
|
49
|
+
const app = (0, express_1.default)();
|
|
50
50
|
const implementation = {
|
|
51
51
|
codeError: () => {
|
|
52
52
|
const err = new Error("This is a code error");
|
|
@@ -58,7 +58,7 @@ ava_1.default("passes through codes if available and makes them exposed", async
|
|
|
58
58
|
expose: [{ methodName: "codeError" }],
|
|
59
59
|
service: "hello-service",
|
|
60
60
|
};
|
|
61
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }), __1.createErrorHandler());
|
|
61
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }), (0, __1.createErrorHandler)());
|
|
62
62
|
const serverAddress = createServerAddress(app);
|
|
63
63
|
const err = await t.throwsAsync(() => got_1.default.post(`${serverAddress}/rpc/codeError`, {
|
|
64
64
|
json: {},
|
|
@@ -69,9 +69,9 @@ ava_1.default("passes through codes if available and makes them exposed", async
|
|
|
69
69
|
code: "CODE_ERROR",
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
|
-
ava_1.default("passes through expose if available on a @loke/errors type", async (t) => {
|
|
73
|
-
const app = express_1.default();
|
|
74
|
-
const CustomError = errors_1.createErrorType({
|
|
72
|
+
(0, ava_1.default)("passes through expose if available on a @loke/errors type", async (t) => {
|
|
73
|
+
const app = (0, express_1.default)();
|
|
74
|
+
const CustomError = (0, errors_1.createErrorType)({
|
|
75
75
|
message: "LOKE Error",
|
|
76
76
|
code: "my_code",
|
|
77
77
|
help: "Some help",
|
|
@@ -86,7 +86,7 @@ ava_1.default("passes through expose if available on a @loke/errors type", async
|
|
|
86
86
|
expose: [{ methodName: "lokeError" }],
|
|
87
87
|
service: "hello-service",
|
|
88
88
|
};
|
|
89
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }), __1.createErrorHandler());
|
|
89
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }), (0, __1.createErrorHandler)());
|
|
90
90
|
const serverAddress = createServerAddress(app);
|
|
91
91
|
const err = await t.throwsAsync(() => got_1.default.post(`${serverAddress}/rpc/lokeError`, {
|
|
92
92
|
json: {},
|
|
@@ -103,9 +103,9 @@ ava_1.default("passes through expose if available on a @loke/errors type", async
|
|
|
103
103
|
type: "my_code",
|
|
104
104
|
});
|
|
105
105
|
});
|
|
106
|
-
ava_1.default("passes through @loke/errors serialized in full", async (t) => {
|
|
107
|
-
const app = express_1.default();
|
|
108
|
-
const CustomError = errors_1.createErrorType({
|
|
106
|
+
(0, ava_1.default)("passes through @loke/errors serialized in full", async (t) => {
|
|
107
|
+
const app = (0, express_1.default)();
|
|
108
|
+
const CustomError = (0, errors_1.createErrorType)({
|
|
109
109
|
message: "LOKE Error",
|
|
110
110
|
code: "my_code",
|
|
111
111
|
help: "Some help",
|
|
@@ -119,7 +119,7 @@ ava_1.default("passes through @loke/errors serialized in full", async (t) => {
|
|
|
119
119
|
expose: [{ methodName: "lokeError" }],
|
|
120
120
|
service: "hello-service",
|
|
121
121
|
};
|
|
122
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }), __1.createErrorHandler());
|
|
122
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }), (0, __1.createErrorHandler)());
|
|
123
123
|
const serverAddress = createServerAddress(app);
|
|
124
124
|
const err = await t.throwsAsync(() => got_1.default.post(`${serverAddress}/rpc/lokeError`, {
|
|
125
125
|
json: {},
|
|
@@ -136,12 +136,12 @@ ava_1.default("passes through @loke/errors serialized in full", async (t) => {
|
|
|
136
136
|
something: "else",
|
|
137
137
|
});
|
|
138
138
|
});
|
|
139
|
-
ava_1.default("logs error stacktraces if not exposed", async (t) => {
|
|
139
|
+
(0, ava_1.default)("logs error stacktraces if not exposed", async (t) => {
|
|
140
140
|
let logged = "";
|
|
141
141
|
const log = (str) => {
|
|
142
142
|
logged += str;
|
|
143
143
|
};
|
|
144
|
-
const app = express_1.default();
|
|
144
|
+
const app = (0, express_1.default)();
|
|
145
145
|
function stack1() {
|
|
146
146
|
stack2();
|
|
147
147
|
}
|
|
@@ -157,7 +157,7 @@ ava_1.default("logs error stacktraces if not exposed", async (t) => {
|
|
|
157
157
|
expose: [{ methodName: "stackError" }],
|
|
158
158
|
service: "hello-service",
|
|
159
159
|
};
|
|
160
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }), __1.createErrorHandler({ log }));
|
|
160
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }), (0, __1.createErrorHandler)({ log }));
|
|
161
161
|
const serverAddress = createServerAddress(app);
|
|
162
162
|
await t.throwsAsync(() => got_1.default.post(`${serverAddress}/rpc/stackError`, {
|
|
163
163
|
json: {},
|
package/dist/test/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../test/errors.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,gDAAwB;AACxB,sDAA2C;AAC3C,8DAAqC;AACrC,8CAAsB;AACtB,2BAA+E;AAC/E,yCAA+C;AAE/C,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAgB,EAAE,EAAE;IACvD,IAAI,EAAE,CAAC;IACP,wEAAwE;AAC1E,CAAC,CAAC;AAEF,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IAED,OAAO,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,aAAI,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../test/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/test/express.js
CHANGED
|
@@ -23,8 +23,8 @@ function createServerAddress(app) {
|
|
|
23
23
|
}
|
|
24
24
|
return `http://localhost:${address.port}`;
|
|
25
25
|
}
|
|
26
|
-
ava_1.default("basic integration test", async (t) => {
|
|
27
|
-
const app = express_1.default();
|
|
26
|
+
(0, ava_1.default)("basic integration test", async (t) => {
|
|
27
|
+
const app = (0, express_1.default)();
|
|
28
28
|
const implementation = {
|
|
29
29
|
hello: (x) => {
|
|
30
30
|
return `success ${x.msg}`;
|
|
@@ -34,7 +34,7 @@ ava_1.default("basic integration test", async (t) => {
|
|
|
34
34
|
expose: [{ methodName: "hello" }],
|
|
35
35
|
service: "hello-service",
|
|
36
36
|
};
|
|
37
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }]));
|
|
37
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }]));
|
|
38
38
|
const serverAddress = createServerAddress(app);
|
|
39
39
|
const body = await got_1.default
|
|
40
40
|
.post(`${serverAddress}/rpc/hello-service/hello`, {
|
|
@@ -49,8 +49,8 @@ ava_1.default("basic integration test", async (t) => {
|
|
|
49
49
|
json: { msg: "world" },
|
|
50
50
|
}));
|
|
51
51
|
});
|
|
52
|
-
ava_1.default("legacy mode should expose methods under the root path", async (t) => {
|
|
53
|
-
const app = express_1.default();
|
|
52
|
+
(0, ava_1.default)("legacy mode should expose methods under the root path", async (t) => {
|
|
53
|
+
const app = (0, express_1.default)();
|
|
54
54
|
const implementation = {
|
|
55
55
|
hello: (x) => {
|
|
56
56
|
return `success ${x.msg}`;
|
|
@@ -60,7 +60,7 @@ ava_1.default("legacy mode should expose methods under the root path", async (t)
|
|
|
60
60
|
expose: [{ methodName: "hello" }],
|
|
61
61
|
service: "hello-service",
|
|
62
62
|
};
|
|
63
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }));
|
|
63
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }));
|
|
64
64
|
const serverAddress = createServerAddress(app);
|
|
65
65
|
const body = await got_1.default
|
|
66
66
|
.post(`${serverAddress}/rpc/hello`, {
|
|
@@ -69,8 +69,8 @@ ava_1.default("legacy mode should expose methods under the root path", async (t)
|
|
|
69
69
|
.json();
|
|
70
70
|
t.is(body, "success world");
|
|
71
71
|
});
|
|
72
|
-
ava_1.default("legacy mode should ALSO expose methods under the new nested path", async (t) => {
|
|
73
|
-
const app = express_1.default();
|
|
72
|
+
(0, ava_1.default)("legacy mode should ALSO expose methods under the new nested path", async (t) => {
|
|
73
|
+
const app = (0, express_1.default)();
|
|
74
74
|
const implementation = {
|
|
75
75
|
hello: (x) => {
|
|
76
76
|
return `success ${x.msg}`;
|
|
@@ -80,7 +80,7 @@ ava_1.default("legacy mode should ALSO expose methods under the new nested path"
|
|
|
80
80
|
expose: [{ methodName: "hello" }],
|
|
81
81
|
service: "hello-service",
|
|
82
82
|
};
|
|
83
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }));
|
|
83
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }));
|
|
84
84
|
const serverAddress = createServerAddress(app);
|
|
85
85
|
const body = await got_1.default
|
|
86
86
|
.post(`${serverAddress}/rpc/hello-service/hello`, {
|
|
@@ -89,8 +89,8 @@ ava_1.default("legacy mode should ALSO expose methods under the new nested path"
|
|
|
89
89
|
.json();
|
|
90
90
|
t.is(body, "success world");
|
|
91
91
|
});
|
|
92
|
-
ava_1.default("exposes metadata and documentation for a single service", async (t) => {
|
|
93
|
-
const app = express_1.default();
|
|
92
|
+
(0, ava_1.default)("exposes metadata and documentation for a single service", async (t) => {
|
|
93
|
+
const app = (0, express_1.default)();
|
|
94
94
|
const implementation = { hello: (x) => `success ${x.msg}` };
|
|
95
95
|
const meta = {
|
|
96
96
|
expose: [
|
|
@@ -106,10 +106,10 @@ It just returns success.`,
|
|
|
106
106
|
help: `This is the help for the service.
|
|
107
107
|
Can include **Markdown**.`,
|
|
108
108
|
};
|
|
109
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }]));
|
|
109
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }]));
|
|
110
110
|
const serverAddress = createServerAddress(app);
|
|
111
111
|
// All service metadata
|
|
112
|
-
const allMeta = (await got_1.default(`${serverAddress}/rpc/hello-service`, {
|
|
112
|
+
const allMeta = (await (0, got_1.default)(`${serverAddress}/rpc/hello-service`, {
|
|
113
113
|
responseType: "json",
|
|
114
114
|
})).body;
|
|
115
115
|
t.deepEqual(allMeta, {
|
|
@@ -126,7 +126,7 @@ Can include **Markdown**.`,
|
|
|
126
126
|
],
|
|
127
127
|
});
|
|
128
128
|
// Method metadata
|
|
129
|
-
const singleMeta = await got_1.default(`${serverAddress}/rpc/hello-service/hello`).json();
|
|
129
|
+
const singleMeta = await (0, got_1.default)(`${serverAddress}/rpc/hello-service/hello`).json();
|
|
130
130
|
t.deepEqual(singleMeta, {
|
|
131
131
|
methodName: "hello",
|
|
132
132
|
paramNames: ["greeting"],
|
|
@@ -134,8 +134,8 @@ Can include **Markdown**.`,
|
|
|
134
134
|
help: "This is a simple method.\nIt just returns success.",
|
|
135
135
|
});
|
|
136
136
|
});
|
|
137
|
-
ava_1.default("exposes metadata and documentation in legacy mode", async (t) => {
|
|
138
|
-
const app = express_1.default();
|
|
137
|
+
(0, ava_1.default)("exposes metadata and documentation in legacy mode", async (t) => {
|
|
138
|
+
const app = (0, express_1.default)();
|
|
139
139
|
const implementation = { hello: (x) => `success ${x.msg}` };
|
|
140
140
|
const meta = {
|
|
141
141
|
expose: [
|
|
@@ -151,10 +151,10 @@ It just returns success.`,
|
|
|
151
151
|
help: `This is the help for the service.
|
|
152
152
|
Can include **Markdown**.`,
|
|
153
153
|
};
|
|
154
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([{ implementation, meta }], { legacy: true }));
|
|
154
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([{ implementation, meta }], { legacy: true }));
|
|
155
155
|
const serverAddress = createServerAddress(app);
|
|
156
156
|
// All service metadata
|
|
157
|
-
const allMeta = (await got_1.default(`${serverAddress}/rpc`, {
|
|
157
|
+
const allMeta = (await (0, got_1.default)(`${serverAddress}/rpc`, {
|
|
158
158
|
responseType: "json",
|
|
159
159
|
})).body;
|
|
160
160
|
t.deepEqual(allMeta, {
|
|
@@ -175,7 +175,7 @@ Can include **Markdown**.`,
|
|
|
175
175
|
],
|
|
176
176
|
});
|
|
177
177
|
// Method metadata
|
|
178
|
-
const singleMeta = await got_1.default(`${serverAddress}/rpc/hello`).json();
|
|
178
|
+
const singleMeta = await (0, got_1.default)(`${serverAddress}/rpc/hello`).json();
|
|
179
179
|
t.deepEqual(singleMeta, {
|
|
180
180
|
methodName: "hello",
|
|
181
181
|
paramNames: ["greeting"],
|
|
@@ -183,11 +183,11 @@ Can include **Markdown**.`,
|
|
|
183
183
|
help: "This is a simple method.\nIt just returns success.",
|
|
184
184
|
});
|
|
185
185
|
});
|
|
186
|
-
ava_1.default("exposes metadata for all services in handler", async (t) => {
|
|
187
|
-
const app = express_1.default();
|
|
186
|
+
(0, ava_1.default)("exposes metadata for all services in handler", async (t) => {
|
|
187
|
+
const app = (0, express_1.default)();
|
|
188
188
|
const service1 = {
|
|
189
189
|
implementation: {
|
|
190
|
-
|
|
190
|
+
hello1: (x) => {
|
|
191
191
|
return `success ${x.msg}`;
|
|
192
192
|
},
|
|
193
193
|
},
|
|
@@ -199,7 +199,7 @@ ava_1.default("exposes metadata for all services in handler", async (t) => {
|
|
|
199
199
|
};
|
|
200
200
|
const service2 = {
|
|
201
201
|
implementation: {
|
|
202
|
-
|
|
202
|
+
hello2: (x) => {
|
|
203
203
|
return `success ${x.msg}`;
|
|
204
204
|
},
|
|
205
205
|
},
|
|
@@ -209,7 +209,7 @@ ava_1.default("exposes metadata for all services in handler", async (t) => {
|
|
|
209
209
|
help: "hello",
|
|
210
210
|
},
|
|
211
211
|
};
|
|
212
|
-
app.use("/rpc", body_parser_1.default.json(), inspect, __1.createRequestHandler([service1, service2]));
|
|
212
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([service1, service2]));
|
|
213
213
|
const serverAddress = createServerAddress(app);
|
|
214
214
|
const body = await got_1.default.get(`${serverAddress}/rpc`).json();
|
|
215
215
|
t.deepEqual(body, {
|
package/dist/test/express.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../test/express.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AACvB,gDAAwB;AACxB,sDAA2C;AAC3C,8DAAqC;AACrC,8CAAsB;AACtB,2BAA2D;AAE3D,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAgB,EAAE,EAAE;IACvD,IAAI,EAAE,CAAC;IACP,wEAAwE;AAC1E,CAAC,CAAC;AAEF,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IAED,OAAO,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,aAAI,
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../test/express.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ava_1 = __importDefault(require("ava"));
|
|
7
|
+
const http_1 = __importDefault(require("http"));
|
|
8
|
+
const express_1 = __importDefault(require("express"));
|
|
9
|
+
const body_parser_1 = __importDefault(require("body-parser"));
|
|
10
|
+
const got_1 = __importDefault(require("got"));
|
|
11
|
+
const __1 = require("../");
|
|
12
|
+
const schema_1 = require("../schema");
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
const inspect = (req, res, next) => {
|
|
15
|
+
next();
|
|
16
|
+
};
|
|
17
|
+
function createServerAddress(app) {
|
|
18
|
+
const server = http_1.default.createServer(app);
|
|
19
|
+
server.listen(0);
|
|
20
|
+
const address = server.address();
|
|
21
|
+
if (!address || typeof address !== "object") {
|
|
22
|
+
throw new Error("No server address found");
|
|
23
|
+
}
|
|
24
|
+
return `http://localhost:${address.port}`;
|
|
25
|
+
}
|
|
26
|
+
(0, ava_1.default)("should validate schemas", async (t) => {
|
|
27
|
+
const app = (0, express_1.default)();
|
|
28
|
+
const untypedService = {
|
|
29
|
+
foo: (x) => {
|
|
30
|
+
return `success ${x.msg}`;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
const service1 = {
|
|
34
|
+
bar: async (x) => {
|
|
35
|
+
return x.user;
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
class Service2Imp {
|
|
39
|
+
async baz(x) {
|
|
40
|
+
return `success ${x.msg}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// interface Service2 {
|
|
44
|
+
// baz: (x: { msg: string; user?: User }) => Promise<string>;
|
|
45
|
+
// }
|
|
46
|
+
const service2 = new Service2Imp();
|
|
47
|
+
app.use("/rpc", body_parser_1.default.json(), inspect, (0, __1.createRequestHandler)([
|
|
48
|
+
{
|
|
49
|
+
implementation: untypedService,
|
|
50
|
+
meta: { service: "untypedService", expose: [{ methodName: "foo" }] },
|
|
51
|
+
},
|
|
52
|
+
(0, schema_1.serviceWithSchema)(service1, {
|
|
53
|
+
name: "service1",
|
|
54
|
+
definitions: {
|
|
55
|
+
User: {
|
|
56
|
+
properties: {
|
|
57
|
+
name: { type: "string" },
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
methods: {
|
|
62
|
+
bar: {
|
|
63
|
+
requestTypeDef: {
|
|
64
|
+
properties: {
|
|
65
|
+
message: { type: "string" },
|
|
66
|
+
user: { ref: "User" },
|
|
67
|
+
},
|
|
68
|
+
optionalProperties: {
|
|
69
|
+
thing: {},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
responseTypeDef: { ref: "User" },
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
}),
|
|
76
|
+
(0, schema_1.serviceWithSchema)(service2, {
|
|
77
|
+
name: "service2",
|
|
78
|
+
definitions: {
|
|
79
|
+
User: {
|
|
80
|
+
properties: {
|
|
81
|
+
name: { type: "string" },
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
methods: {
|
|
86
|
+
baz: {
|
|
87
|
+
requestTypeDef: {
|
|
88
|
+
properties: {
|
|
89
|
+
msg: { type: "string" },
|
|
90
|
+
},
|
|
91
|
+
optionalProperties: {
|
|
92
|
+
user: { ref: "User" },
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
responseTypeDef: { type: "string" },
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
]), (0, __1.createErrorHandler)());
|
|
100
|
+
const serverAddress = createServerAddress(app);
|
|
101
|
+
const body = await got_1.default
|
|
102
|
+
.post(`${serverAddress}/rpc/service1/bar`, {
|
|
103
|
+
json: { message: "world", user: { name: "1" } },
|
|
104
|
+
})
|
|
105
|
+
.json();
|
|
106
|
+
t.deepEqual(body, { name: "1" });
|
|
107
|
+
const err = await t.throwsAsync(() => got_1.default
|
|
108
|
+
.post(`${serverAddress}/rpc/service1/bar`, {
|
|
109
|
+
json: { message: "c", user: { name: 1 } },
|
|
110
|
+
})
|
|
111
|
+
.json());
|
|
112
|
+
t.deepEqual(JSON.parse(err.response.body), {
|
|
113
|
+
message: "user.name must be string",
|
|
114
|
+
code: "validation",
|
|
115
|
+
type: "https://errors.loke.global/@loke/http-rpc/validation",
|
|
116
|
+
instancePath: "/user/name",
|
|
117
|
+
schemaPath: "/definitions/User/properties/name/type",
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../test/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loke/http-rpc",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.1.0-beta.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"@loke/errors": "0.2.1",
|
|
31
31
|
"@types/body-parser": "^1.19.0",
|
|
32
32
|
"@types/express": "^4.17.8",
|
|
33
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
34
|
-
"@typescript-eslint/parser": "^
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "^5.36.1",
|
|
34
|
+
"@typescript-eslint/parser": "^5.36.1",
|
|
35
35
|
"ava": "^3.12.1",
|
|
36
36
|
"body-parser": "^1.15.2",
|
|
37
|
-
"eslint": "^
|
|
37
|
+
"eslint": "^8.23.0",
|
|
38
38
|
"eslint-config-prettier": "^6.11.0",
|
|
39
39
|
"eslint-plugin-ava": "^11.0.0",
|
|
40
40
|
"eslint-plugin-prettier": "^3.1.4",
|
|
@@ -42,10 +42,13 @@
|
|
|
42
42
|
"got": "^11.6.2",
|
|
43
43
|
"prettier": "2.1.1",
|
|
44
44
|
"prom-client": "^12.0.0",
|
|
45
|
-
"ts-node": "^9.
|
|
46
|
-
"typescript": "^4.
|
|
45
|
+
"ts-node": "^10.9.1",
|
|
46
|
+
"typescript": "^4.8.2"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"prom-client": "12.x"
|
|
50
|
+
},
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"ajv": "^8.11.0"
|
|
50
53
|
}
|
|
51
54
|
}
|