Skip to content

Commit 07425fe

Browse files
authored
Merge pull request #512 from open-rpc/fix/params-by-name
fix: params by name sortParamKeys should return val not return ["key", val]
2 parents b016930 + 8a79740 commit 07425fe

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"ws": "^7.3.1"
3535
},
3636
"devDependencies": {
37-
"@open-rpc/examples": "^1.6.0",
37+
"@open-rpc/examples": "^1.6.1",
3838
"@open-rpc/meta-schema": "^1.13.20",
3939
"@types/body-parser": "^1.19.0",
4040
"@types/connect": "^3.4.33",

src/router.test.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,12 @@ describe("router", () => {
6363
if (exampleName === "petstoreByName") {
6464
it("handles params by name", async () => {
6565
const router = new Router(parsedExample, makeMethodMapping(parsedExample.methods));
66-
const result = await router.call("list_pets", { limit: 10 });
66+
const result = await router.call("list_pets", { limit: 1 });
6767
expect(result).toBeDefined();
6868
expect(result.result.length).toBeGreaterThan(0);
69+
expect(result.result[0].name).toBe("fluffy");
70+
expect(result.result[0].id).toBe(7);
71+
expect(result.result[0].tag).toBe("poodle");
6972
});
7073
}
7174
if (exampleName === "simpleMath") {
@@ -108,6 +111,12 @@ describe("router", () => {
108111
expect(result).toEqual(parsedExample);
109112
});
110113

114+
it("can call rpc.discover with empty object", async () => {
115+
const router = new Router(parsedExample, makeMethodMapping(parsedExample.methods));
116+
const { result } = await router.call("rpc.discover", {});
117+
expect(result).toEqual(parsedExample);
118+
});
119+
111120
it("Simple math call validates params", async () => {
112121
const router = new Router(parsedExample, makeMethodMapping(parsedExample.methods));
113122
const { error } = await router.call("addition", ["2", 2]);

src/router.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,21 @@ export interface MockModeSettings {
2020

2121
export type TMethodHandler = (...args: any) => Promise<any>;
2222

23-
const sortParamKeys = (method: MethodObject, params: Record<string, unknown>) => {
23+
const sortParamKeys = (method?: MethodObject, params?: Record<string, unknown>) => {
24+
if (!method) {
25+
return [];
26+
}
27+
if (!params) {
28+
return [];
29+
}
2430
const docParams = method.params as ContentDescriptorObject[];
2531
const methodParamsOrder: { [k: string]: number } = docParams
2632
.map((p) => p.name)
2733
.reduce((m, pn, i) => ({ ...m, [pn]: i }), {});
2834

29-
return Object.entries(params).sort((v1, v2) => methodParamsOrder[v1[0]] - methodParamsOrder[v2[0]]);
35+
return Object.entries(params)
36+
.sort((v1, v2) => methodParamsOrder[v1[0]] - methodParamsOrder[v2[0]])
37+
.map(([key, val]) => val);
3038
};
3139

3240
export class Router {

0 commit comments

Comments
 (0)