1.3.1 • Published 12 months ago

@nullrpc/server v1.3.1

Weekly downloads
-
License
-
Repository
-
Last release
12 months ago

@nullrpc/server

You probably shouldn't use this yet.

Installation

npm install @nullrpc/server
import {
    command, 
    createRouter
} from "@nullrpc/server";

Basics

Commands

const helloWorldCommand = command().handler(({success}) => {
    return success("Hello World");
});

Router

const rpcRouter = createRouter({
    "helloWorld": helloWorldCommand,
});

const router = express.Router();

router.post("/rpc", rpcRouter);
const result = await axios.post("/rpc", {
    jsonrpc: "2.0",
    method: "helloWorld",
    params: null,
    id: 1,
});

console.log(result.data);
// {
//     jsonrpc: "2.0",
//     result: "Hello World",
//     id: 1,
// }

See Also: @nullrpc/client

Commands In-Depth

Inject Context

Middleware

Modify Context

Validation

Handlers

Immutability & Reusability

const baseCommand = command()
    .inject(req => {
        return {
            session: req.session,
            user: req.user,
            csrf: req.get("X-CSRF-Token"),
        };
    });

const signupCommand = baseCommand
    .validate(
        Joi.object({
            username: Joi.string().min(3).max(24),
            password: Joi.string().min(3).max(128),
        })
    )
    .handler(({params, success, fail}) => {
        const {username, password} = params;

        // .....

        return success({username, token});
    });

const loginCommand = baseCommand
    .validate(
        Joi.object({
            username: Joi.string().min(3).max(24),
            password: Joi.string().min(3).max(128),
        })
    )
    .handler(({params, success, fail}) => {
        const {username, password} = params;

        // .....

        return success({username, token});
    });
1.3.1

12 months ago

1.3.0

12 months ago

1.2.0

12 months ago

1.1.0

12 months ago

1.0.3

1 year ago