@kodekeep/hapi-json-rpc
v1.0.0
Published
An implementation of the JSON-RPC 2.0 specification for building RPCs with hapi.js
Downloads
11
Readme
@kodekeep/hapi-json-rpc
An implementation of the JSON-RPC 2.0 specification for building RPCs with hapi.js
Installation
yarn add @kodekeep/hapi-json-rpc
Usage
Joi (Default)
import * as plugin from "@kodekeep/hapi-json-rpc";
import Joi from "@hapi/joi";
await server.register({
plugin,
options: {
methods: [...],
processor: {
schema: Joi.object().keys({
id: Joi.alternatives().try(Joi.number(), Joi.string()).required(),
jsonrpc: Joi.string().allow("2.0").required(),
method: Joi.string().required(),
params: Joi.object(),
}),
validate(data: object, schema: object) {
return Joi.validate(data, schema);
},
},
},
});
AJV
import * as plugin from "@kodekeep/hapi-json-rpc";
import Ajv from "ajv";
await server.register({
plugin,
options: {
methods: [...],
processor: {
schema: {
properties: {
id: {
type: ["number", "string"],
},
jsonrpc: {
pattern: "2.0",
type: "string",
},
method: {
type: "string",
},
params: {
type: "object",
},
},
required: ["jsonrpc", "method", "id"],
type: "object",
},
validate(data: object, schema: object) {
try {
const ajv = new Ajv({
$data: true,
extendRefs: true,
removeAdditional: true,
});
ajv.validate(schema, data);
return { value: data, error: ajv.errors !== null ? ajv.errorsText() : null };
} catch (error) {
return { value: null, error: error.stack };
}
},
},
});
Testing
yarn test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover a security vulnerability within this package, please send an e-mail to [email protected]. All security vulnerabilities will be promptly addressed.
Credits
This project exists thanks to all the people who contribute.
License
Mozilla Public License Version 2.0 (MPL-2.0). Please see License File for more information.